【发布时间】:2016-01-17 11:04:23
【问题描述】:
编辑:
如果有人和我一样愚蠢,我会留下这个。
解决方法:重启apache服务器..
解释:我在运行时实时更改内容,我更改的一些内容立即发送过来并立即生效。有些需要重新启动服务器才能生效。我只是花了很多时间更改尽可能多的东西,以尝试让它在只需要重新启动的情况下正常工作。
结束编辑
我正在尝试创建一个注册页面,但每当我尝试验证时都会收到 Keyerrors。
我已经尝试寻找解决方案很长一段时间了,并查看了很多我认为应该有效的堆栈溢出答案,但无论出于何种原因根本没有奏效。
错误总是发生在同一行,无论哪个字段留空(密码1或密码2)
干净:
def clean(self):
if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data and self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError("Passwords do not match")
return cleaned_data
表单元素:
username = forms.CharField(required = False)
password1 = forms.CharField(required = False, widget=forms.PasswordInput, label='Password')
password2 = forms.CharField(required = False, widget=forms.PasswordInput, label='Repeat Password')
email = forms.EmailField(required = False)
来自views.py:
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect("/register/success")
else:
form = UserForm()
return render(request, 'register.html', {'form':form})
我的 HTML 表单模板是一个表格,每行 4 行 3 列。第一列是错误,通常为空白,但如果有任何与该字段相关的错误,则会弹出。第二个是字段的标签,第三个是字段本身的文本框。
编辑:我决定在提交之前对其进行更多测试,它似乎发生在第 44 行,无论第 44 行是什么。如果它在不同的函数中?没关系,第 44 行。所有字段最初都是必需的,但在此测试期间我将它们全部更改为 False,我知道如果我将用户名/电子邮件留空,此时会出错。
这是堆栈跟踪:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/register/views.py" in register
10. if form.is_valid():
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in is_valid
161. return self.is_bound and not self.errors
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in errors
153. self.full_clean()
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in full_clean
363. self._clean_form()
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _clean_form
390. cleaned_data = self.clean()
File "/register/forms.py" in clean
44. temp = 2
Exception Type: KeyError at /register/
Exception Value: 'password1'
【问题讨论】:
-
向我们展示您的模板
-
@doniyor 将此归咎于我愚蠢,我是 django 的新手,并且习惯了在制作它们时发生的变化。我什至没有想到要重新启动 apache 服务器。
标签: django django-models django-forms