Django中的Form组件功能:

1.对用户请求的验证

2.生成html代码

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

前端代码:

  1. <form action="/f1.html" method="post" id="fm">
  2. <p>
  3. <input type="text" name="user">{{ obj.errors.user.0 }} #获取错误信息.0去掉换行
  4. </p>
  5. <p>
  6. <input type="password" name="pwd">{{ obj.errors.pwd. }}
  7. </p>
  8. <p>
  9. <input type="text" name="email">{{ obj.errors.email. }}
  10. </p>
  11. <p>
  12. <input type="text" name="age">{{ obj.errors.age. }}
  13. </p>
  14. {% csrf_token %}
  15. <input type="submit" value="提交">
  16. </form>

服务端:

  1. from django import forms
  2. from django.forms import fields
  3.  
  4. class F1Form(forms.Form):
  5. #下面数据字段名,对于前端表单中name
  6. user = fields.CharField(
  7. max_length=,
  8. min_length=,
  9. required=True,
  10. error_messages={
  11. 'required':"用户名不为空",
  12. 'min_length':"太短了",
  13. 'max_length':"太长了",
  14. }
  15. )
  16. pwd = fields.CharField(required=True,min_length=)
  17. age = fields.IntegerField(
  18. required=True,
  19. error_messages={
  20. 'invalid':"不对"
  21. }
  22. )
  23. email = fields.EmailField(required=True,min_length=)
  24.  
  25. def f1(req):
  26. if req.method == "GET":
  27. return render(req,"f1.html")
  28. else:
  29. #检测是否为空
  30. #检测格式是否正确
  31. obj = F1Form(req.POST)
  32. if obj.is_valid():
  33. #验证成功
  34. return HttpResponse("ok")
  35. else:return render(req,"f1.html",{"obj":obj})

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

服务端:

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

客户端:

  1. <form action="/f1.html" method="post" id="fm">
  2. <p>{{ obj.user }}{{ obj.errors.user. }} #因为get请求中没有在form组件中传入值,所以不会产生相关错误信息,为空,不显示
  3. </p>
  4. <p>
  5. {{ obj.pwd }}{{ obj.errors.pwd. }}
  6. </p>
  7. <p>
  8. {{ obj.email }}{{ obj.errors.email. }}
  9. </p>
  10. <p>
  11. {{ obj.age }}{{ obj.errors.age. }}
  12. </p>
  13. {% csrf_token %}
  14. <input type="submit" value="提交">
  15. <input type="button" value="ajax提交" onclick="submitAjaxForm();">
  16. </form>

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

前端:

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

form组件:

  1. class UserForm(Form):
  2. username = fields.CharField(max_length=,required=True)
  3. email = fields.EmailField(required=True,min_length=)

models添加数据:

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

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

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

form组件字段介绍:

CharField字段介绍:

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

前端使用:

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

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

  1. {{ obj.as_p }}

补充:文件上传验证:

FileField

form组件:

  1. file = fields.FileField(required=True)

前端:

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

服务端:

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

ChoiceField:下拉框

  1. city = fields.ChoiceField(
  2. choices = [(,"aa"),(,"bb"),(3,"cc"),],
         initial = 2, #默认第二项
  3. )
  4.  
  5. 默认设置:
    TestForm({"city":3}) #默认第三个选中

MultipleChoiceField()多选下拉框

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

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

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

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

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

.......

python---django中form组件(1)简单使用和字段了解的更多相关文章

  1. django框架中form组件的简单使用示例:注册验证

    Django中form组件的三大特点: 1. 生成页面可使用的HTML标签 2. 对用户提交的数据进行初步校验    3. 保留上次输入内容 废话不多说,直接进入正题. 这是注册界面截图: 与上一篇a ...

  2. python Django之Form组件

    python Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试 ...

  3. Django中Form组件的使用

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

  4. django中form组件

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

  5. Django中form组件的is_valid校验机制

    先来归纳一下整个流程(1)首先is_valid()起手,看seld.errors中是否值,只要有值就是flase(2)接着分析errors.里面判断_errors是都为空,如果为空返回self.ful ...

  6. Python之路【第二十一篇】:Django之Form组件

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

  7. python框架之Django(10)-Form组件

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

  8. 〖Python〗-- Django的Form组件

    [Django的Form组件] Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 Form类的使 ...

  9. RSA算法在Python Django中的简单应用

    说明 RSA算法是当今使用最广泛,安全度最高的加密算法. • RSA算法的安全性理论基础 [引]根据百科介绍,对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难, ...

  10. Django 之 Form 组件

    常用功能 From 组件主要有以下几大功能: 生成 HTML 标签 验证用户数据(显示错误信息) HTML Form 提交保留上次提交数据 初始化页面显示内容 小试牛刀 下面我们通过 Form 组件来 ...

随机推荐

  1. [CF1039D]You Are Given a Tree[贪心+根号分治]

    题意 给你\(n\)个点的树,其中一个简单路径的集合被称为\(k\)合法当且仅当树的每个节点最多属于一条路径,且每条路径包含\(k\)个节点.对于每个\(k(k \in [1,n])\),输出最多的\ ...

  2. 不再迷惑,无值和NULL值

    在关系型数据库的世界中,无值和NULL值的区别是什么?一直被这个问题困扰着,甚至在写TSQL脚本时,战战兢兢,如履薄冰,害怕因为自己的一知半解,挖了坑,贻害后来人,于是,本着上下求索,不达通幽不罢休的 ...

  3. asp.net web api参数

    翻译自:http://www.c-sharpcorner.com/article/parameter-binding-in-asp-net-web-api/ 主要自己学习下,说是翻译,主要是把文章的意 ...

  4. 阿里云centos 安装禅道

    下载 我的阿里云服务器系统是 centos6.8 64 位,下载的禅道版本是 Linux 64位一键安装包(适用于Linux 64位) 由于阿里云服务器没桌面,所以下载用不了浏览器,可考虑在本地下载后 ...

  5. allegro对齐操作

    在placement  edit模式下 选中元件,右键对齐即可.

  6. 1084. Broken Keyboard (20)-水题

    #include <iostream> #include <cstdio> #include <string.h> #include <algorithm&g ...

  7. Linux内核分析第二周总结

    计算机是如何工作的? 计算机的"三大法宝": 存储程序计算机 函数调用堆栈 中断机制 堆栈是计算机运行高级语言的基础 函数调用堆栈: 32位X86通过函数调用堆栈来传递参数 使用e ...

  8. C# winform打开文件夹并选中指定文件

    例如:打开“E:\Training”文件夹并选中“20131250.html”文件 System.Diagnostics.Process.Start("Explorer.exe", ...

  9. JS面向对象编程:对象

    一般面向过程的写法都是写很多function,坏处:1.代码复用不好 2.函数名称容易重复冲突 下面介绍面向对象的写法: 在JS中每个函数function都是一个对象. 比如,下面这个就是一个对象,我 ...

  10. Django-项目配置

    目录 配置文件 数据库配置DATABASE - 指定MySQL数据库 数据库配置DATABASE - 指定SQL Server数据库 数据库配置DATABASE - 指定多个数据库 模版文件 静态文件 ...