0
我是Django的新手,并且正在关注如何构建注册视图的教程。我做了完全一样的,但我的表单不通过form.is_valid()。为什么我的Django注册表没有通过is_valid()
这里是我做过什么:
forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class MyRegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2')
def save(self, commit=True):
user = super(MyRegistrationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
views.py
def register_user(request):
if request.method == 'POST':
form = MyRegistrationForm(request.POST)
if form.is_valid():
user = form.save()
return HttpResponseRedirect('/accounts/register_success')
form = MyRegistrationForm()
return render(request, 'register.html', {'form':form})
def register_success(request):
return render(request, 'register_success.html')
register.html
{% extends "base.html" %}
{% block content %}
<h2>Register</h2>
<form action="/accounts/register/" method="post">{% csrf_token %}
{{ form }}
<input type="submit" value="Register" />
</form>
{% endblock %}
当我试图在网页上注册新用户时,他们都没有通过。即使当我使用用户名:testuser电子邮件:[email protected]密码:testuser123,它失败了。那么,什么是错的?
提前致谢!
尝试在视图方法'打印form.errors',看看有什么说。 –
@ShangWang哦,谢谢。有用。似乎问题是密码与用户名太相似。 –
很高兴你找到答案。但是,如果没有将实际的验证错误显示回模板,则您的项目不完整。查看下面其他人的答案以撰写完整的视图。 –