Django中的Form组件功能:

1.对用户请求的验证

2.生成html代码

Form使用:对用户请求进行验证

前端代码:

<form action="/f1.html" method="post" id="fm"><p><input type="text" name="user">{{ obj.errors.user.0 }} #获取错误信息.0去掉换行</p><p><input type="password" name="pwd">{{ obj.errors.pwd.0 }}</p><p><input type="text" name="email">{{ obj.errors.email.0 }}</p><p><input type="text" name="age">{{ obj.errors.age.0 }}</p>{% csrf_token %}<input type="submit" value="提交">
</form>

服务端:

from django import forms
from django.forms import fieldsclass F1Form(forms.Form):#下面数据字段名,对于前端表单中nameuser = fields.CharField(max_length=18,min_length=6,required=True,error_messages={'required':"用户名不为空",'min_length':"太短了",'max_length':"太长了",})pwd = fields.CharField(required=True,min_length=32)age = fields.IntegerField(required=True,error_messages={'invalid':"不对"})email = fields.EmailField(required=True,min_length=6)def f1(req):if req.method == "GET":return render(req,"f1.html")else:#检测是否为空#检测格式是否正确obj = F1Form(req.POST)if obj.is_valid():#验证成功return HttpResponse("ok")else:return render(req,"f1.html",{"obj":obj})

2.生成html:指的是在客户端中和服务端表单中为了保证name和字段一致,将表单设置为字段(自动生成表单),就是生成html代码

服务端:

def f1(req):if req.method == "GET":obj = F1Form()return render(req,"f1.html",{"obj":obj})

客户端:

<form action="/f1.html" method="post" id="fm"><p>{{ obj.user }}{{ obj.errors.user.0 }} #因为get请求中没有在form组件中传入值,所以不会产生相关错误信息,为空,不显示</p><p>{{ obj.pwd }}{{ obj.errors.pwd.0 }}</p><p>{{ obj.email }}{{ obj.errors.email.0 }}</p><p>{{ obj.age }}{{ obj.errors.age.0 }}</p>{% csrf_token %}<input type="submit" value="提交"><input type="button" value="ajax提交" οnclick="submitAjaxForm();">
</form>

补充:在添加数据库时,保持前端name,form验证字段,models字段名一致,会便于数据添加:

前端:

      <form action="/add_user.html" method="post"><p>{{ obj.username }}{{ obj.errors.username }}</p><p>{{ obj.email }}{{ obj.errors.email }}</p>{% csrf_token %}<input type="submit" value="提交"></form>

form组件:

class UserForm(Form):username = fields.CharField(max_length=32,required=True)email = fields.EmailField(required=True,min_length=10)

models添加数据:

    if req.method == "POST":obj = UserForm(req.POST)  #前端name和form字段一致时,可以直接传递req.POSTif obj.is_valid():User.objects.create(**obj.cleaned_data) #form字段和models字段一致时,可以直接将检验成功的数据传入return redirect("add_user.html")

补充2:为form组件生成html代码是设置默认数据

def edit_user(req):data = models.user.objects.filter(id=req.GET.get("nid")).first()obj = UserForm({"username":data.username,"email":data.email}return render("edit_user.html",{"obj":obj})  #会在obj中添加上默认数据

form组件字段介绍:

CharField字段介绍:

field_test = fields.CharField(required=True,max_length=32,min_length=16,error_messages={'required':"必须填写"},#widget = widgets.Select(choices=[(1,'aa'),(2,'dd'),]),#定制html插件,就是将该字段设置为select表单格式label="用户名",# initial="ccc", #只能对text格式设置,对于select等有其他方法help_text="fawf", #帮助文本show_hidden_initial=True, #隐藏框validators=[],#自定义验证规则disabled=True,  #设置不可编辑     localize = True, #设置支持本地化     label_suffix="fawf", #设置label后缀 )

前端使用:

<p>{{ obj.field_test.label }}{{ obj.field_test }}{{ obj.field_test.email }}</p>

注:可以使用obj.as_p,as_table,as_ul将表单一次输出(方便,但是灵活性小了,自定义样式不方便,不推荐)

{{ obj.as_p }}

补充:文件上传验证:

FileField

form组件:

file = fields.FileField(required=True)

前端:

注意上传文件需要enctype = "mulipart/form-data"
{{ obj.file }}

服务端:

obj = TestForm(req.POST,req.FILES) #含文件上传时需要将文件传入

ChoiceField:下拉框

city = fields.ChoiceField(choices = [(1,"aa"),(2,"bb"),(3,"cc"),],     initial = 2, #默认第二项
)

默认设置:TestForm({"city":3}) #默认第三个选中

MultipleChoiceField()多选下拉框

initial=[1,2,]设置默认值多个

TypedChoiceField()继承于ChioceField()可以对接受的数据进行类型转换

coerce = lambda x: int(x)将字符串转整型

ComboField()组合验证规则进行验证

fields.COmboField(fields.CharField(max_length=30),fields.EmailField(required=True),)

.......

转载于:https://www.cnblogs.com/ssyfj/p/8679520.html

python---django中form组件(1)简单使用和字段了解相关推荐

  1. Django中Form组件的使用

    Form介绍 HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...

  2. 小白IT:Django框架—form组件和ModelForm

    文章目录 一.form简介 1.form组件的功能 2.form组件的简单使用 数据库模型准备 form简单使用 在视图函数中写注册函数 模板文件login.html文件 二.Form中常用字段约束与 ...

  3. 转载:Django之Form组件

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 + View C ...

  4. 如何在Python Django中处理用户身份验证

    by Mohammed Subhan Khan 由Mohammed Subhan Khan 如何在Python Django中处理用户身份验证 (How to handle user authenti ...

  5. Django之Form组件介绍

    --------------------------------------前言------------------------------------ 在进入正题之前,想多说两句; 当我们开始学习一 ...

  6. Ant Design中Form组件重置验证条件resetFields()方法

    Ant Design中Form组件重置验证条件resetFields()方法 需求, 实际完成时间(与任务生成日期联动,若任务生成日期选上,实际完成时间禁选) 却发现在验证完之后填写实际完成时间后任务 ...

  7. Django的form组件提交时错误不显示或无法提交

    出现的问题:在学习django的form组件时,对不符合form组件定义的字段无法提交,进而导致无法显示出自定义的错误信息.(因为无法提交就代表着数据没有传给后台,然后你的错误回显是在后台对数据的检验 ...

  8. Django基础11(Django中form表单)

    Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入 ...

  9. Django之Form组件

    一.Form组件介绍 1.Form组件可以做的几件事情 1.用户请求数据验证 2.自动生成错误信息 3.打包用户提交的正确信息 4.如果其中有一个错误了,其他的正确这,保留上次输入的内容 5.自动创建 ...

最新文章

  1. 高通5G旗舰升级!骁龙855Plus发布,主打游戏和AI;网友:牙膏厂
  2. 升级OS10.11系统后 Xcode6.4的变化少了个按钮 could not launch “Xcode” Xcode 插件安装...
  3. 2021 届校招宣讲会来啦!神策数据,与你一起「数说」未来
  4. 第一周 第二天的linux学习
  5. 通过改进视频质量评估提升编码效率
  6. python中凯撒密码加密_凯撒密码加密
  7. 17.Linux 高性能服务器编程 --- 系统检测工具
  8. python中求众数_Python实现求众数的三种方法
  9. 1042 Shuffling Machine
  10. 70个晨会激励哲理小故事
  11. 基于FOC矢量算法的MTPA控制在变频洗衣机上的应用
  12. 官网和网盘,VS2015安装详细教程(带图解+下载地址+超详细)
  13. YOLOX: Exceeding YOLO Series in 2021 论文阅读笔记
  14. <Multi-channel and Multi-model based Autoencoding Prior for Grayscale Image Restoration>笔记
  15. 微信小程序调试webview_关于微信小程序webview的使用
  16. 微软数据分析服务 - Microsoft Clarity
  17. 队列的顺序、链式表示与实现
  18. 口算助手--家长好帮手
  19. 电脑硬件:蓝屏的常见解决方案
  20. AMCL定位融合UWB

热门文章

  1. linux服务器系统内核参数优化
  2. php file 扩展,php5.4.31安装php_fileinfo扩展和php_intl扩展
  3. 不恢复余数除法原理_《有余数的除法》教案
  4. 怎么计算z=x+y的概率密度_上大《Scripta Mater》基于第一性原理计算,研究镁合金强化相!...
  5. Eclipse集成lombok插件 解决@Data标签get/set方法找不到异常
  6. Linux和Windows下使用指定的JDK运行jar包
  7. 斯特林数-斯特林反演
  8. Downloading SRA data using command line utilities
  9. 我之所以抛弃Java而选择Kotlin的10个理由
  10. Java JDBC------------------ODBC(SQLServer)链接