pythonのdjango Form简单应用。
Form表单有两种应用场景:
1.生成HTML标签。
2.验证输入内容。
如果我们在django程序中使用form时,需要在views中导入form模块
from django import forms
以前我们在写代码的时候,前端页面中我们也会编写很多代码如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/fm/" method="post">
{% csrf_token %}
<p><input type="text" name="user"/></p>
<p><input type="text" name="pwd"/></p>
<p><input type="text" name="email"/></p>
<input type="submit" value="提交"/>
</form>
</body>
</html>
效果如下:

并且这个提交,当我们需要进行很多验证的时候,要么我们需要些很多的JS代码或者在后台写很多代码进行验证,非常麻烦,而且工作量大。如果我们采用了Form时,就简单很多了。
首先在后台views.py中定义一个类,并且该类继承Form
from django import forms class FM(forms.Form):
# 在这里做验证的时候,参数名必须和html中的标签name保持一致
user = forms.CharField(error_messages={"required":"用户名不能为空。"})
pwd = forms.CharField(
max_length = 12,
min_length = 8,
error_messages={"required":"密码不能为空。","min_length":"密码长度不能小于8","max_length":"密码长度不能大于12"}
)
email = forms.EmailField(error_messages={"required":"邮箱不能为空","invalid":"邮箱格式错误!"})
然后我们在页面请求时作如下操作:
from app01 import models
def fm(request):
if request.method == "GET":
obj = FM()
return render(request,"fm.html",{"obj":obj})
elif request.method == "POST":
# 获取用户所有数据 # 每条数据请求验证 # 成功:获取所有正确信息 # 失败:显示错误信息
obj = FM(request.POST)
r1 = obj.is_valid()
if r1:
print(obj.cleaned_data)
models.UserInf.objects.create(**obj.cleaned_data)
else:
# print(obj.errors.as_json)
#print(obj.errors["user"][0])
return render(request, "fm.html",{"obj":obj})
return render(request,"fm.html")
前端页面代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/fm/" method="post">
{% csrf_token %}
<p>{{ obj.user }}{{ obj.errors.user.0 }}</p>
<p>{{ obj.pwd}}{{ obj.errors.pwd.0 }}</p>
<p>{{ obj.email}}{{ obj.errors.email.0 }}</p>
<input type="submit" value="提交"/>
</form>
</body>
</html>
此时效果如下:

系统自动为我们生成了input标签,这个是从表面上可以看出来的,其次如果我们根据FM类中的验证进行操作时,会提示相关错误及正确信息。
另外,FORM还有几种不常用的操作比如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/fm/" method="post">
{% csrf_token %}
{{ obj.as_p }}
<input type="submit" value="提交"/>
</form>
</body>
</html>
通过obj.as_p可以直接我们生成相关的HTML信息,但是这种情况下我们很难加入其它定制内容,如图所示,会为我们生成P标签:

其它的还有obj.as_ul 以及obj.as_table需要注意的是在使用obj.as_table时,必须在外侧嵌套一层table标签。
pythonのdjango Form简单应用。的更多相关文章
- Python Django 实现简单注册功能
Python Django 实现简单注册功能 项目创建略,可参考前期文档介绍. 目录结构如下 编辑views.py from django.shortcuts import render # Crea ...
- Python django实现简单的邮件系统发送邮件功能
Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...
- Python Django 之 简单入门
一.下载Django并安装 1.下载Django 2.安装 二.新建Django project 1.使用django-admin新建mysite 项目 django-admin startproje ...
- python django Form表单
Django 拥有自己独立的表单功能块,可以完成: 1.表单的定义 2.表单的校验 3.表单的前端样式 等功能,方便我们开发,那么接下来,我们看一下表单的定义 首先我们确定我们要编写的功能,一个提供给 ...
- pythonのdjango CSRF简单使用
一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...
- Python - Django - form 组件动态从数据库取 choices 数据
app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...
- Python - Django - form 组件自定义校验
reg2.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Python - Django - form 组件内置的正则校验器
app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...
- Python - Django - form 组件校验功能
app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...
随机推荐
- Mysql基本命令及数据库存储位置
连接数据库: sudo mysql -p+密码 例如:sudo mysql -p123456 1.显示数据库列表. show databases; 2.显示库中的数据表: use mysql: //打 ...
- centos 6.8 设置svn钩子同步至web目录
1.在web目录创建项目目录 mkdir ./opt/wwwroot/项目名称 2.使用svn检出项目文件 svn checkout svn://localhost:/项目名称 3.设置svn库中钩子 ...
- ansible roles
roles 特点 目录结构清晰 重复调用相同的任务 目录结构相同 web - tasks - install.yml - copfile.yml - start.yml - main.yml - t ...
- ccpc杭州站 赛后总结
Ccpc杭州站赛后总结 2017年11月4号五号,我参加了ccpc杭州站的比赛,我的队友是聂少飞和王艳,在4号一点半,举行了比赛开幕式,听着教练代表的发言,听着参赛选手代表的发言,听着志愿者的发言,都 ...
- Oracle查询字符串数据进行排序,以及去重复
原本的的一张表,填写数据的字段为字符串varchar2类型,然后进行排序的时候,就会出现问题.会默直接默认判断为第一个数字9最大,而不判断整个数字的大小. 所以,就要用到TO_NUMBER函数 sel ...
- centos7之zabbix简单检查之端口监控
1.创建模板 模板名字可以随便起 2.重点在监控项和触发器上. 3.比如我们创建一个监控25端口号的监控项 net.tcp.service[tcp,,25] 这个选项不是手动写上去的,是需要点击选择. ...
- CSS3 移动端 1PX 线变成0.5PX
.line1 {position:relative} .line1:after {content:'';position:absolute;bottom:0;left:0;width:100%;hei ...
- NPOI的基本用法,导出Excel
void DownloadForAccountIndex(IReadOnlyList<AccountInfoView> list) { NPOI.HSSF.UserModel.HSSFWo ...
- [BJOI2019]排兵布阵——分组背包
题目链接: [BJOI2019]排兵布阵 对于每座堡垒,将$s$个对手排序,显然如果安排的兵力能打败第$i$个对手就一定能打败前$i-1$个. 那么对于第$i$座城堡,可以看做有$s+1$个物品(可以 ...
- 使用 PHP SOAP 来创建一个简单的 Web Service。
访问: http://www.debug.com/php-soap-demo.php?client=22 结果: apache: <VirtualHost _default_:80> Do ...