Django form 的作用
- Django自带的form表单主要是为了做校验数据。
- 并且它可以返回任何你想要在form表单中展示的信息。
- 也可以返回详细的出错信息。
下面以一个简单的登录页面举例
1、在APP目录下面创建一个.py
文件,用于存放form表单(我这里创建的是forms.py
)
form django import forms
class LoginForm(forms.Form):
username = forms.CharField(lable = '用户名',max_length = 20)
password = forms.CharField(lable = '密码',widget = forms.PasswordInput())
#定义一个校验方法
def clean(self):
#这个校验方法首先要调用父类的校验方法
clean_data = super().clean()
username = clean_data.get('username')
password = clean_data.get('password')
if username == 'xxx' and password == 'zzz':
pass
else:
msg = '用户名密码错误'
self.add_error(field = None,error = msg)
2、views中的一番操作
首先要导入这个forms.py
的文件
from . import forms
def login(request):
if request.method == 'POST':
form = forms.LoginForm(request.POST)
#is_valid是一个校验方法
if form.is_valid():
#username = form.cleaned_data.get('username')
#password = form.cleaned_data.get('password')
return redirect('/teacher/index/')
if request.method == 'GET':
form = forms.LoginForm()
return render(request,'teacher/login.html',context = {'form':form})
2、再来看看templates中的login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="" method="post">
<p>{{ 错误的信息form.errors }}</p>
{{ form.as_p }}
<p><input type="submit" value="提交"></p>
{% csrf_token %}
</form>
</body>
</html>