我是Django的新手,正在复习一些我不理解的代码.我查看了Django的源代码,试图找出Django的类UserCreationFrom
(粘贴在下面)是否为您处理POST逻辑,或者这是否在其他地方实现.
为了澄清这一点,我看到了一个用于呈现表单的类,然后是验证数据的某种类型的视图.它通常是这样的:
Form类:
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ("first_name", "last_name")
观点:
def update_profile(request):
if request.method == "POST":
user_form = UserForm(request.POST, instance=request.user)
if user_form.is_valid():
user_form.save()
return redirect("somewhere")
else:
user_form = UserForm(instance=request.user)
return render(request, "profile.html", {"user_form":user_form})
这种实现是有意义的.
我不理解的是,当有一个呈现表单的视图,但表单本身处理验证并省略了上面所示的if request.method == "POST"
逻辑时.或者这是在某个家长班上?其中任何一个也符合Django约定吗?
举个例子:
Class 观点:
class UserSignupView(CreateView):
model = CustomUser
form_class = UserProfileSignupForm
template_name = 'signup_form.html'
def get_context_data(self, **kwargs):
kwargs['is_confused'] = True
return super().get_context_data(**kwargs)
def form_valid(self, form):
user = form.save()
login(self.request, user)
return redirect('somewhere')
那么表单及其逻辑将如下所示:
class UserSignUpForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = User
def save(self):
user = super().save(commit=False)
user.is_confused = True
user.save()
return user
任何建议和澄清都将不胜感激.
就像我说的,我已经看过了Django的文档,但无法弄清楚这一点.我想我遗漏了一些基本的东西,或者如果我的代码没有在这里呈现完整的故事.要澄清的是,以下表格是针对同一事物的,尽管它们的目的并不相同.我从一个型号/应用程序上得到了一个,从另一个模型/应用程序中得到了另一个.我认为两者都可以稍加修改,并在需要此功能的任何地方使用.