Django之Form表单
Posted yan-peng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之Form表单相关的知识,希望对你有一定的参考价值。
1:什么是表单
2:HTML表单与Django表单
3:Django中表单的使用流程
4:常用的字段与验证器
5:自定义验证器
6: 提取错误信息
7:ModelForm:
(1)自定义错误消息
(2)save()方法
1什么是表单:表单是用来收集用户信息的表的集合,比如用户在网站上登入(输入自己的用户名,密码提交到网站)这个过程用到的表就是表单
2HTML表单与django表单
html表单:form标签,提交地址,请求方式,提交按钮
<form action="" method="post" enctype="multipart/form-data"> <input type="text" name="username"> <input type="password" name="password"> <input type="file"> <input type="checkbox"> <input type="submit"> </form>
django表单:是由Form类实现的,主要分为forms.Form和forms.ModelForm两种,前者为基本的表单或者为结合模型生成的表单
django表单的作用:(1)类似于html页面一样生成表单模板(2)对表单提交上来的数据进行验证(重点)
3:django表单使用的基本流程:
(1)生成一个表单模板:
在APP中创建一个py文件,名字为forms;这里面写表单的内容:目录如下
forms.py代码:
from django import forms class IndexForm(forms.Form): title = forms.CharField(max_length=12,label="标题") //max_length表示最大长度,label表示标题名字 content = forms.CharField(widget= forms.Textarea,label="内容") //widget表示表单的属性 replay = forms.BooleanField(required=False,label="记住我")
view.py代码:
from django.shortcuts import render from django.views.generic import View from .forms import IndexForm class IndexView(View): def get(self,request): //get请求的时候,返回一个IndexForm form = IndexForm() return render(request,"index.html",context={"form":form})
html代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="" method="post"> <table> {{ form.as_table }} //在HTML中渲染一个表单三种方式(form.as_table,form.as_ul,form.as_p),之后还要添加提交按钮 <tr> <td></td> <td><input type="submit"></td> </tr> </table> </form> </body> </html>
(2)对表单提交上来的数据进行验证
forms.py
from django import forms class IndexFrom(forms.Form): title = forms.CharField(max_length=12,label="标题",min_length=4) //最少不能小于4个 content = forms.CharField(widget= forms.Textarea,label="内容") email = forms.EmailField() //添加一个邮箱的验证 replay = forms.BooleanField(required=False,label="记住我") //required=False 表示值可以不填,默认为True
view.py
from django.shortcuts import render,HttpResponse from django.views.generic import View from .forms import IndexFrom class IndexView(View): def get(self,request): form = IndexFrom() return render(request,"index.html",context={"form":form}) def post(self,request): form = IndexFrom(request.POST) //将request.POST接收到的值传给IndexForm表单进行验证, if form.is_valid(): //如果验证成功则为True return HttpResponse("ok") else: print(form.errors.get_json_data()) return HttpResponse("fail")
4:常用的验证器
(1)常用的字段(Field):
以上是关于Django之Form表单的主要内容,如果未能解决你的问题,请参考以下文章