我一直试图弄清楚所有这些验证是如何工作的,但我没有掌握它。我阅读了 djangoproject 上的极少数示例,但我缺少概念以及所有内容是如何联系在一起的。
如果你可以请看我的代码并重新安排事情应该是怎样的,以及一些解释,那就太棒了!
所以我想做一些非常简单的事情:只用电子邮件登录。当用户键入他们的电子邮件时,我想检查它是否在数据库中,如果是,请登录。如果不是,我想提出一个错误'用户已经在数据库中'并建议这个人去 /register
所以我目前拥有的是:
视图.py:
def emailLogin(request, backend, extra_context=None, initial={}):
form = EmailLoginForm(initial=initial)
if request.method == 'POST':
form = EmailLoginForm(initial=initial, data=request.POST)
if form.is_valid():
user = form.do_save()
_no_pass_login(request, user) # my custom login
return redirect('/')
else:
print ('not valid')
return render_jinja(request, 'registration/email_login_form.html',
type="register",
form = form
)
表格.py:
class EmailLoginForm(forms.Form):
email = forms.EmailField()
def do_save(self):
try:
u = User.objects.get(email=self.cleaned_data['email'])
except :
raise forms.ValidationError("Already in DB")
return u
所以重点是我缺少概念 - 应该在哪里提出验证错误,视图或表单?它上升到哪里?谁抓住了它?每个文件中需要导入的内容等。
这应该不会太难,但我现在完全迷失了,我没有可以分析和修改我的代码的示例,所以我在这里。