【发布时间】:2020-12-02 14:37:09
【问题描述】:
我正在使用 django allauth 模块来创建用户。在 views,py 中,我将 CreateView 子类化,但我无法让 form_valid 工作。它似乎没有被调用(我没有导入 HttpResponseRedirect 但它没有抱怨
class SignupPageView(generic.CreateView):
form_class = CustomUserCreationForm
success_url = reverse_lazy('login')
template_name = 'registration/signup.html'
def form_valid(self, form):
print('form_valid')
return HttpResponseRedirect(self.get_success_url())
def form_invalid(self, form):
print('form_invalid')
return HttpResponseRedirect(self.get_success_url())
我做错了什么?
编辑
我还添加了 form_invalid,它仍然没有失败。这让我认为某些基本的东西是错误的。
用户注册过程似乎运行正常,没有报告错误
与表单关联的html是
{% extends '_base.html' %}
{% load crispy_forms_tags %}
{% block title %}Sign Up{% endblock title %}
{% block content %}
<h2>Sign Up</h2>
<form method="post">
{% csrf_token %}
{{ form | crispy }}
<button type="submit">Sign Up</button>
</form>
{% endblock content %}
urls.py
urlpatterns = [
path('signup/', SignupPageView.as_view(), name='signup'),
]
【问题讨论】:
-
表格有效吗?
-
在
form_invalid()中添加打印语句,然后重试。可能您的表单无效,因此执行未达到form_valid()方法。 -
问题可能出在您的 URL 模式或模板中。
标签: django django-allauth