0
我有一个简单的用户注册表单(在forms.py):清除所有表单域验证错误在Django
from django.contrib.auth.models import User
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput
validators=[MinLengthValidator(6)])
password_repeat = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'password','password_repeat']
如果有人试图输入一些东西,验证失败我想同样的形式是再次渲染,但所有字段都应该清除。目前,我的看法是这样的(在views.py):
def signup(request):
form = UserForm(request.POST or None)
if form.is_valid():
user = form.save(commit=False)
username = form.cleaned_data['username']
password = form.cleaned_data['password']
password_repeat = form.cleaned_data['password-repeat']
user.set_password(password)
user.save()
user = auth.authenticate(username=username, password=password)
if user is not None and user.is_active:
auth.login(request, user)
return redirect('/')
return render(request, 'signup.html', {'form': form})
的问题是,form.fields['username']
领域仍包含已输入,并且就这样过去了呈现的用户名。
我一直在寻找解决方案,但现在找不到它。我的猜测是该解决方案与我似乎没有得到的clean()
方法有关。
对不起,我应该清除这个。我想显示错误,但也清除所有字段。如果我只是实例化一个新的表单,我会失去错误信息。 – FloodLuszt