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简单应用。的更多相关文章

  1. Python Django 实现简单注册功能

    Python Django 实现简单注册功能 项目创建略,可参考前期文档介绍. 目录结构如下 编辑views.py from django.shortcuts import render # Crea ...

  2. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  3. Python Django 之 简单入门

    一.下载Django并安装 1.下载Django 2.安装 二.新建Django project 1.使用django-admin新建mysite 项目 django-admin startproje ...

  4. python django Form表单

    Django 拥有自己独立的表单功能块,可以完成: 1.表单的定义 2.表单的校验 3.表单的前端样式 等功能,方便我们开发,那么接下来,我们看一下表单的定义 首先我们确定我们要编写的功能,一个提供给 ...

  5. pythonのdjango CSRF简单使用

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  6. Python - Django - form 组件动态从数据库取 choices 数据

    app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...

  7. Python - Django - form 组件自定义校验

    reg2.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  8. Python - Django - form 组件内置的正则校验器

    app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...

  9. Python - Django - form 组件校验功能

    app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...

随机推荐

  1. Hive JDBC:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous

    今天使用JDBC来操作Hive时,首先启动了hive远程服务模式:hiveserver2 &(表示后台运行),然后到eclipse中运行程序时出现错误: java.sql.SQLExcepti ...

  2. HTTP的一些基本概念

    HTTP协议:HTTP(超文本传输协议)协议就是计算机在网络中进行通信所必须共同遵守的规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器,我们目前使用的是HTTP/1.1 ...

  3. Acdream1201 SuSu's Power

    题目:SuSu's Power 链接:http://acdream.info/problem?pid=1201 题意:一个人站在x轴原点上,初始方向向x轴正方向,由一个字符串来控制其运动,字符串由A. ...

  4. windows常用快捷键和指令

    快捷键: Ctrl+鼠标滚轮:更改图标大小(桌面).缩放(开始屏幕) Ctrl+A:选择所有 Ctrl+C:复制 Ctrl+E:选择搜索框(资源管理器) Ctrl+N:新窗口(资源管理器) Ctrl+ ...

  5. git忽略文件不起作用时

    开始我是直接进到仓库建立了.gitignore文件,再从仓库进入到项目add时总是会添加不需要添加的文件, 后来明白应该是在哪里提交在哪里创建.gitignore文件 git忽略文件操作步骤如下: 1 ...

  6. C语言函数-socket

    int sock = socket(AF_INET, SOCK_STREAM, 0) //建立一个流式套接字,stream是流的意思,Tcp连接,提供序列化的.可靠的.双向连接的字节流.支持带外数据传 ...

  7. crontab计划任务实例

    使用实例 实例1:每1分钟执行一次command 命令: * * * * * command 实例2:每小时的第3和第15分钟执行 命令: 3,15 * * * * command 实例3:在上午8点 ...

  8. MySQL数据库、表常用操作

    1.按条件查询表中数据: mysql> select user,host,password from user; 2.按组合条件查询表中数据: mysql> select id, pass ...

  9. GWAS:拒绝假阳性之case和control数量比例严重失衡的解决方案(SAIGE模型的应用)

    一.为什么要校正case和control数量比例不平衡情况 试问作为生信届人员,最怕的是什么,当然是统计结果不靠谱.统计结果不靠谱包括两方面:一个是假阴性,一个是假阳性.假阴性可以理解为白天鹅被误当成 ...

  10. 三、Dockerfile的说明和编写

    一.docker hub的使用和说明: 我们要去找镜像,一般都会 https://hub.docker.com  的网站中去找,目前linux的容器,我们目前首选是alpine,因为容器非常小,可以满 ...