Django之form组件
Posted W-D
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之form组件相关的知识,希望对你有一定的参考价值。
一、简介 |
web框架中避免不了对表单的验证,我们可以通过js在表单数据提交前做一次校验,然而在Django中form组件不仅仅提供验证功能,还可以生成html,还可以与model结合使用,等等强大的功能。
先了解下主要的作用:
- 生成HTML标签
- 验证用户数据(显示错误信息)
- HTML Form提交保留上次提交数据
- 初始化页面显示内容
二、基本操作 |
1.创建form类
#_*_ coding:utf-8 _*_ #Author:wd from django.forms import Form from django.forms import widgets from django.forms import fields class myform(Form): user=fields.CharField( #字段名字一定要和模板中html中input中name属性一致才能验证 widget=widgets.TextInput(attrs={‘id‘:‘a1‘,‘class‘:‘c1‘}), min_length=6, error_messages={‘required‘:‘用户名不能为空‘,‘min_length‘:‘用户名至少6位‘} ) pwd=fields.CharField( widget=widgets.PasswordInput(), max_length=24, error_messages={‘required‘:‘密码不能为空‘,‘max_length‘:‘密码长度不能超过24‘} ) email=fields.EmailField( error_messages={‘required‘:‘用户名不能为空‘,‘invalid‘:‘邮箱格式不正确‘} ) #校验时候出现的错误提示信息
2.views函数处理
from .cmdbforms import myform #导入定义的form类 def fm(request): if request.method==‘GET‘: obj=myform() #生成对象 return render(request,‘form.html‘,{‘obj‘:obj})#将对象传入到模板中用于生成html elif request.method==‘POST‘: obj=myform(request.POST) if obj.is_valid(): #该方法验证post提交表单的数据是否合法,合法返回True或者否则Flase print(obj.clean()) #获取post表单中提交的数据,格式为字典,可以直接用于model操作数据库 print(obj.cleaned_data)#获取post表单中提交的数据,格式为字典,可以直接用于model操作数据库 return redirect(‘/cmdb/fm/‘) else: print(obj.errors) print(obj.errors.as_json())#json格式的错误 return render(request,‘form.html‘,{‘obj‘:obj})#当出现错误的时候返回的错误信息
3.HTML模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/cmdb/fm/" method="POST" enctype="multipart/form-data"> {% csrf_token %} <p>{{ obj.user }} {{ obj.user.errors.0 }}</p> {# 0代表第一个错误,在这里就是错误的字符串 #} <p>{{ obj.pwd }} {{ obj.pwd.errors.0 }}</p> <p>{{ obj.email }} {{ obj.email.errors.0 }}</p> <input type="submit" value="提交"/> </form> </body> </html>
以上是关于Django之form组件的主要内容,如果未能解决你的问题,请参考以下文章