dar*_*rko 5 django validation modelform
我无法弄清楚如何控制模型表单的字段验证。
这是我的表格模型:
class UserForm(ModelForm):
class Meta:
model = User
fields = ('email', 'password')
Run Code Online (Sandbox Code Playgroud)
以下是我在模板中呈现表单的方式:
<form method="post" action="">
{% csrf_token %}
{{ userform.as_p }}
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的观点:
def login_page(request):
if request.method == 'POST':
userform = UserForm(request.POST)
if userform.is_valid():
email = request.POST['email']
password = request.POST['password']
user = authenticate(username=email, password=password)
if user is not None:
login(request, user)
return redirect('/dashboard/')
else:
# How can I give the user feedback about authentication failute here. Right now it just reloads the form without any messages.
return render(request, "login.html", {"userform": userform})
else:
# Because .is_valid() is called, The userform will validate for email addresses and that a password input is present here.
return render(request, "login.html", {"userform": userform})
else:
userform = UserForm()
return render(request, "login.html", {"userform": userform})
Run Code Online (Sandbox Code Playgroud)
从阅读文档来看,这似乎应该像向我的表单传递一些自定义属性一样简单;但由于我正在使用 ModelForm,我不确定这是否是通过相同的方式实现的。
任何人都可以提供有关如何最好地控制 ModelForm 字段错误的示例或提示吗?
谢谢!
Django身份验证应用程序有一个可供您使用的内置组件AuthenticationForm。如果您查看源代码,您可以看到他们的方法是检查clean方法内的用户名和密码。这样,如果用户名和密码组合无效,则会引发验证错误,并且表单将显示该错误。
您可以AuthenticationForm通过以下导入导入并在登录视图中使用它:
from django.contrib.auth.forms import Authentication
Run Code Online (Sandbox Code Playgroud)
您也许还可以使用内置视图login。这意味着您可以利用添加的功能,例如如果用户未启用 cookie,则显示一条消息。它还减少了创建安全漏洞的机会。
| 归档时间: |
|
| 查看次数: |
5161 次 |
| 最近记录: |