python---django中form组件(1)简单使用和字段了解
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. }}
</p>
<p>
<input type="text" name="email">{{ obj.errors.email. }}
</p>
<p>
<input type="text" name="age">{{ obj.errors.age. }}
</p>
{% csrf_token %}
<input type="submit" value="提交">
</form>
服务端:
from django import forms
from django.forms import fields class F1Form(forms.Form):
#下面数据字段名,对于前端表单中name
user = fields.CharField(
max_length=,
min_length=,
required=True,
error_messages={
'required':"用户名不为空",
'min_length':"太短了",
'max_length':"太长了",
}
)
pwd = fields.CharField(required=True,min_length=)
age = fields.IntegerField(
required=True,
error_messages={
'invalid':"不对"
}
)
email = fields.EmailField(required=True,min_length=) 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. }} #因为get请求中没有在form组件中传入值,所以不会产生相关错误信息,为空,不显示
</p>
<p>
{{ obj.pwd }}{{ obj.errors.pwd. }}
</p>
<p>
{{ obj.email }}{{ obj.errors.email. }}
</p>
<p>
{{ obj.age }}{{ obj.errors.age. }}
</p>
{% csrf_token %}
<input type="submit" value="提交">
<input type="button" value="ajax提交" onclick="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=,required=True)
email = fields.EmailField(required=True,min_length=)
models添加数据:
if req.method == "POST":
obj = UserForm(req.POST) #前端name和form字段一致时,可以直接传递req.POST
if 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=,
min_length=,
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 = [(,"aa"),(,"bb"),(3,"cc"),],
initial = 2, #默认第二项
) 默认设置:
TestForm({"city":3}) #默认第三个选中
MultipleChoiceField()多选下拉框
initial=[,,]设置默认值多个
TypedChoiceField()继承于ChioceField()可以对接受的数据进行类型转换
coerce = lambda x: int(x)将字符串转整型
ComboField()组合验证规则进行验证
fields.COmboField(fields.CharField(max_length=),fields.EmailField(required=True),)
python---django中form组件(1)简单使用和字段了解的更多相关文章
- django框架中form组件的简单使用示例:注册验证
Django中form组件的三大特点: 1. 生成页面可使用的HTML标签 2. 对用户提交的数据进行初步校验 3. 保留上次输入内容 废话不多说,直接进入正题. 这是注册界面截图: 与上一篇a ...
- python Django之Form组件
python Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试 ...
- Django中Form组件的使用
Form介绍 HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...
- django中form组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Django中form组件的is_valid校验机制
先来归纳一下整个流程(1)首先is_valid()起手,看seld.errors中是否值,只要有值就是flase(2)接着分析errors.里面判断_errors是都为空,如果为空返回self.ful ...
- Python之路【第二十一篇】:Django之Form组件
Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1. ...
- python框架之Django(10)-Form组件
介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...
- 〖Python〗-- Django的Form组件
[Django的Form组件] Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 Form类的使 ...
- RSA算法在Python Django中的简单应用
说明 RSA算法是当今使用最广泛,安全度最高的加密算法. • RSA算法的安全性理论基础 [引]根据百科介绍,对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难, ...
- Django 之 Form 组件
常用功能 From 组件主要有以下几大功能: 生成 HTML 标签 验证用户数据(显示错误信息) HTML Form 提交保留上次提交数据 初始化页面显示内容 小试牛刀 下面我们通过 Form 组件来 ...
随机推荐
- [CF1009G]Allowed Letters[贪心+霍尔定理]
题意 给你一个长为 \(n\) 的串,字符集为 \(a,b,c,d,e,f\) .你可以将整个串打乱之后重新放置,但是某些位置上有一些限制:必须放某个字符集的字符.问字典序最小的串,如果无解输出 &q ...
- Django的跨域请求
一 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之 ...
- 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard
目录 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard 正文 对我的启发 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard Sanyam Bhutani 是 M ...
- Daily Scrum NO.7
工作概况 今日由于时间比较充裕,没有编译作业的干扰,团员们的进度喜人.线程池.动态爬取.异常清理这三个主要开发工作已经步入尾声.其中线程池开发工作的代码已经签入,现主要在测试和优化.动态爬取今日也签入 ...
- 2-Eighteenth Scrum Meeting-20151218
任务安排 成员 今日完成 明日任务 闫昊 写完学习进度记录的数据库操作 写完学习进度记录的数据库操作 唐彬 编写与服务器交互的代码 和服务器老师交流讨论区后台接口 史烨轩 获取视频url 尝试使用 ...
- Linux内核分析-构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS linux内核目录结构 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel C ...
- 20170929php
这是之前学习PHP类使用的代码 <?phpclass animal{ var $name="1"; var $sex="2"; public static ...
- OpenState安装及 Port Knocking 实验
OpenState安装及 Port Knocking 实验 目录 OpenState安装 Port Knocking 实验 OpenState安装及 Port Knocking 实验 OpenStat ...
- Leetcode——37.解数独 [##]
@author: ZZQ @software: PyCharm @file: leetcode37_solveSudoku.py @time: 2018/11/20 16:41 思路:递归回溯 首先, ...
- Daily Scrum - 12/01
Meeting Minutes 今天重阳去和UI设计团队的人去讨论UI方面的事宜了,剩下的人主要还是在讨论文件输入输出的事.目前总算是能实现文件存取了,尽量在明天前把文件的格式内容都弄好. Burnd ...