python - 如何从 Django CreateView 检索表单数据?
问题描述
我有一个 Django 博客,用户可以在其中设置每个帖子的状态(活动、非活动)。我正在使用 Django 的基于类的通用视图,并且希望仅在状态设置为“活动”时将用户重定向到他们创建的帖子,否则他们应该被重定向到主页。如何从表单中检索此提交的信息以创建 if 语句?例如:如果状态 == "a"...
视图.py
from .models import Listing
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic import CreateView
class PostCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
model = Post
fields = ['title', 'status', 'content']
template_name = 'blog/post-form.html'
success_message = 'Your post has been created.'
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)
解决方案
我认为“重定向”在方法(form_valid)中无效,因此您绝对应该放置类似 def post 的内容,并在 request.data 中获取值。我将尝试向您展示在生产中为我工作的代码。你让我知道这是否是正确的反应。
类 LoginFormView(FormInvalidMessageMixin,LoginView):
template_name = "clientes/login.html
def post(self, request, *args, **kwargs):
username = self.request.POST.get('username')
password = self.request.POST.get('password')
tipo_cuenta = self.request.POST.get('tipo-cuenta')
tipo_cuenta = tipo_cuenta.strip()
user = authenticate(username=username, password=password)
if user:
if has_group(user, 'admin'):
messages.success(request, _('Not for admin'))
return redirect('/login')
cliente = Usuario.objects.filter(usuario=user).first()
sucursal = Sucursal.objects.filter(usuario=user).first()
empleado = Empleado.objects.filter(usuario=user).first()
if tipo_cuenta == 'Punto afiliado':
login(self.request, user)
return redirect('/envios')
推荐阅读
- expression - ANTLR4:表达式中的符号“*”和“+”
- mongoose - 如何在猫鼬查询中计算数组字段中的元素
- python - python中所有数据框列的组合
- python - 如何标准化张量数据集
- html - 透明导航菜单下的英雄部分
- javascript - 尽管使用了 setState(),但 React 组件在状态更改后不会重新渲染
- algorithm - 如何确定在较大网格内产生最大数量的正方形的布局
- javascript - 我想问一下行的总和
- azure-active-directory - 在 B2C 租户上创建用户:由 AzureAD 上的用户创建触发
- javascript - Ionic - 解析 JSON 内容并将其显示在模态控制器中