Python - Django - form 组件基本用法
普通 form 表单的处理:
reg.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
</head>
<body> <form action="/reg/" method="post">
{% csrf_token %}
<p>用户名:
<input type="text" name="username">
<span>{{ error.user }}</span> {# 如果有错误,就获取错误信息 #}
</p>
<p>密码:
<input type="password" name="pwd">
<span>{{ error.pwd }}</span> {# 如果有错误,就获取错误信息 #}
</p>
<p>
<input type="submit">
</p>
</form> </body>
</html>
views.py:
from django.shortcuts import render, HttpResponse
from app01 import models def reg(request):
error = {"user": "", "pwd": ""} # 用一个字典来存错误信息
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("pwd") if len(username) > 5:
error["user"] = "用户名不能大于 5 位"
if len(password) < 6:
error["pwd"] = "密码不能小于 6 位"
elif len(password) > 10:
error["pwd"] = "密码不能大于 10 位" return render(request, "reg.html", {"error": error})
访问,http://127.0.0.1:8000/reg/
输入大于 5 位数的用户名和大于 10 位数的密码

使用 form 组件处理表单:
reg2.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
</head>
<body> <form action="/reg2/" method="post" novalidate>
{% csrf_token %}
{{ form_obj.as_p }} {# 以 p 标签形式显示 #}
{# {{ form_obj.errors.username }} {# 单独获取 username 的错误信息 #}
{# {{ form_obj.errors.password }} {# 单独获取 password 的错误信息 #}
<p><input type="submit"></p>
</form> </body>
</html>
form_obj 可以直接获取到 username、password 的错误信息,也可以通过 errors 来单独获取
views.py:
from django.shortcuts import render, HttpResponse
from app01 import models from django import forms # 导入 form 组件 # 定义一个 form 类
class RegForm(forms.Form):
username = forms.CharField(
min_length=5,
label="用户名", # 设置标签名
# 错误信息
error_messages={
"min_length": "用户名不能大于5位!",
}
)
password = forms.CharField(
min_length=6,
label="密码", # 设置标签名
# 错误信息
error_messages={
"min_length": "密码不能少于6位!",
}
) def reg2(request):
form_obj = RegForm() # GET 请求,实例化 form 对象 if request.method == "POST":
form_obj = RegForm(request.POST)
# form 帮我们做校验
if form_obj.is_valid(): # 判断 form_obj 是否有值
pass return render(request, "reg2.html", {"form_obj": form_obj})
访问,http://127.0.0.1:8000/reg2/

如果要把密码处的内容隐藏起来,要用到 widgets
views.py:
from django import forms
from django.forms import widgets class RegForm(forms.Form):
username = forms.CharField(
min_length=5,
label="用户名",
error_messages={
"min_length": "用户名不能大于5位!",
}
) password = forms.CharField(
min_length=6,
label="密码",
error_messages={
"min_length": "密码不能少于6位!",
},
widget=widgets.PasswordInput() # 把输入的密码隐藏起来
)
运行结果:

但是点击 “提交” 之后

密码的内容没有了
修改 views.py,在 PasswordInput 中添加参数:
from django import forms
from django.forms import widgets class RegForm(forms.Form):
username = forms.CharField(
min_length=5,
label="用户名",
error_messages={
"min_length": "用户名不能大于5位!",
}
) password = forms.CharField(
min_length=6,
label="密码",
error_messages={
"min_length": "密码不能少于6位!",
},
widget=widgets.PasswordInput(render_value=True)
)
运行结果:

Python - Django - form 组件基本用法的更多相关文章
- Python - Django - form 组件内置的正则校验器
app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...
- 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 组件常用的字段和字段参数
邮箱: views.py: from django import forms from django.forms import widgets class RegForm(forms.Form): e ...
- 9.24 Django Form组件
2018-9-23 20:10:04 这两天优化了自己图书管理系统 github 连接:https://github.com/TrueNewBee/pythonDemo 顺便整理了博客,写了好多总结, ...
- 6月28日 Django form组件 和 modelform组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- django Form组件
django Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建 ...
- Django—Form组件
Django From简介 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比 ...
随机推荐
- 持久化JS存储
<script src="../../lib/persist-min.js"></script> //测试一下本地化存储器 var store = new ...
- postgres高可用学习篇三:haproxy+keepalived实现postgres负载均衡
环境: CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.10.1.el7.x86_64 node1:192.168.216.130 node2 ...
- linux中如何升级Python
一.使用wget 下载Python 安装包 我是在虚拟中当中安装的: wget http://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 报错: ...
- insmod: ERROR: could not insert module dm-snapshot.ko: Unknown symbol in module
下面方法成功的前提是你的mod和你的操作系统版本是匹配的,也就是说你的mod之前成功过.说个多余的提示,mod在/lib/modules目录里面 insmod: ERROR: could not in ...
- MyBatis框架的insert节点-向数据库中插入数据
需求:使用mybatis框架中的insert元素节点向数据库中插入数据 UserMapper.xml UserMapper.java 编写测试方法: @Test public void testAdd ...
- hdu6172&&hdu6185&&P5487——BM算法
hdu6172 模板的简单应用 先根据题中的表达式求出前几项,再上BM,注意一下n的大小关系. #include <bits/stdc++.h> using namespace std; ...
- Time Frequency (T-F) Masking Technique
时频掩蔽技术. 掩蔽效应 声掩蔽(auditory masking)是指一个声音的听阈因另一个声音的存在而上升的现象.纯音被白噪声所掩蔽时,纯音听阈上升的分贝数,主要决定于以纯音频率为中心一个窄带噪声 ...
- Windows10 Faster R-CNN(GPU版) 运行 Demo
上篇文章介绍了 TensorFlow 环境的搭建,这篇介绍 demo 运行 参考链接 参考链接2 1. 下载 TensorFlow object detection API 相关文件 点击跳转下载文件 ...
- dbt 0.13.0 新添加特性sources 试用
dbt 0.13 添加了一个新的功能sources 我呢可以用来做以下事情 从基础模型的源表中进行数据选择 测试对于源数据的假设 计算源数据的freshness source 操作 定义source ...
- 通过三层交换机实现不同VLAN间的通信
主机的IP地址以及子网掩码已列出,下面将讲解如何配置利用三层交换机来实现不同VLAN间的相互通信 SW1的命令: en //进入特权模式 conf t //全局模式 vlan 10 // ...