Django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm
关于django的表单系统,主要分两种
基于django.forms.Form:所有表单类的父类
基于django.forms.ModelForm:可以和模型类绑定的Form
示例代码:
views.py
from django.forms import Form
from django.forms import fields
class LoginForm(Form):
# 正则验证: 不能为空,6-18
username = fields.CharField(
max_length=18,
min_length=6,
required=True,
error_messages={
'required': '用户名不能为空',
'min_length': '太短了',
'max_length': '太长了',
}
)
# 正则验证: 不能为空,16+
password = fields.CharField(min_length=4,required=True)
# email = fields.EmailField()
# email = fields.GenericIPAddressField()
# email = fields.IntegerField()
def login(request):
if request.method == "GET":
return render(request,'login.html')
else:
obj = LoginForm(request.POST)
if obj.is_valid():
# 用户输入格式正确
print(obj.cleaned_data) # 字典类型
return redirect('http://www.baidu.com')
else:
# 用户输入格式错误
return render(request,'login.html',{'obj':obj})
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/',views.login),
#url(r'^test/',views.test),
]
login.html
<form method="POST" action="/login/">
{% csrf_token %}
<p>
用户:<input type="text" name="username"/>{{ obj.errors.username.0 }}
</p>
<p>
密码:<input type="password" name="password"/>{{ obj.errors.password.0 }}
</p>
<input type="submit" value="提交" />{{ msg }}
</form>