一、Form组件初识
- 引用类
from django import forms
- 继承
forms.Form
- 继承后里面的变量名和html标签name属性,一一对应关系
class FM(forms.Form):
user = forms.CharField()
pwd = forms.CharField()
email = forms.EmailField()
- view中方法使用,创建对象
obj = FM(request.POST)
,判断是否为真Valid = obj.is_valid()
,获取对象全部内容obj.cleaned_data
,获取展示页面的提示信息obj.errors
def login(request):
if request.method == "GET":
return render(request,"login.html")
elif request.method == "POST":
obj = FM(request.POST)
Valid = obj.is_valid()
if Valid:
print(obj.cleaned_data)
else:
#print(obj.errors.as_json)
erro_msg = obj.errors
return render(request,'login.html',{"erro":erro_msg})
- 其中
obj.errors.as_json
打印的格式为
<bound method ErrorDict.as_json of {'pwd': ['密码不能为空'], 'email': ['邮箱不能为空'], 'user': ['用户名不能为空']}>
- 如何让默认提示变成英文
-
error_messages
错误信息的属性 -
required
是否为空 -
max_length
最长 -
min_length
最短 -
invalid
格式
user = forms.CharField(error_messages={'required':'用户名不能为空'})
pwd = forms.CharField(
max_length=12,
min_length=6,
error_messages={'required':'密码不能为空','max_length':'密码长度小于12','min_length':'密码长度大于6'}
)
email = forms.EmailField(error_messages={'required':'邮箱不能为空','invalid' :'邮箱格式不对'})
view 层的代码
<form action="/login/" method="post">
{% csrf_token %}
<p><input name="user" type="text">{{ erro.user.0 }}</p>
<p><input name="pwd" type="password">{{ erro.pwd.0 }}</p>
<p><input name="email" type="text">{{ erro.email.0 }}</p>
<input type="submit">
二、Form组件升级
from django.shortcuts import render,redirect
from django import forms
# Create your views here.
class FM(forms.Form):
user = forms.CharField(error_messages={'required':'用户名不能为空'})
pwd = forms.CharField(
max_length=12,
min_length=6,
error_messages={'required':'密码不能为空','max_length':'密码长度小于12','min_length':'密码长度大于6'}
)
email = forms.EmailField(error_messages={'required':'邮箱不能为空','invalid' :'邮箱格式不对'})
def login(request):
if request.method == "GET":
obj = FM()
return render(request,"login.html",{"obj":obj})
elif request.method == "POST":
obj = FM(request.POST)
Valid = obj.is_valid()
if Valid:
print(obj.cleaned_data)
else:
return render(request,'login.html',{"obj":obj})
html
<form action="/login/" method="post">
{% csrf_token %}
<p>{{ obj.user }}{{ obj.erros.user.0 }}</p>
<p>{{ obj.pwd }}{{ obj.erros.pwd.0 }}</p>
<p>{{ obj.email }}{{ obj.erros.email.0 }}</p>
<input type="submit">
</form>
其中在html页面中ul展示{{obj.as_ul}}
,p标签展示{{obj.as_p}}
table展示
<table>
{{obj.as_table}
</table>