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