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标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比 ...
随机推荐
- Four subspaces - Prof. Strang
相应地,用映射的观点考察映射σ的kernal space与image space,得到的就是下面这张图啦 Ref: Introduction to Linear Algebra 5th Edition ...
- php中函数的类型提示和文件读取功能
这个没有深入. <?php function addNumbers(int $a, int $b, bool $printSum): int { $sum = $a + $b; if ($pri ...
- vs code 搭建java maven springboot环境
Java Extension Pack,Maven for Java,Spring Boot Extension Pack https://blog.csdn.net/qq_26026975/arti ...
- js Date对象和数字对象
<script type="text/javascript"> alert(new Date.toLocaleString()); </script> 以本 ...
- JSON—去除JSON数据中的所有HTML标…
package com.linoer.utils; import java.util.ArrayList; import java.util.List; import java.util.regex. ...
- OLED液晶屏幕(1)OLED液晶屏幕ssd1306驱动芯片 arduino运行 ESP8266-07可以 12f不可以
OLED屏幕有各种形状和尺寸,但目前有两种非常受欢迎的屏幕尺寸. 1)0.96“ 2)1.3“ 他们也有2种常见的颜色 1)蓝色 2)白色 驱动OLED的芯片常用的有两种.这两种芯片有许多非常相似的设 ...
- LeetCode 959. Regions Cut By Slashes
原题链接在这里:https://leetcode.com/problems/regions-cut-by-slashes/ 题目: In a N x N grid composed of 1 x 1 ...
- MySQL 内连接、外连接、左连接、右连接、全连接……太多了
用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). 主题:内连接 ...
- 持续集成学习9 jenkins执行脚本
一.配置 1.首先在slave节点上写一脚本 [root@node1 script]# cat /application/script/test.sh #!/bin/bash echo "h ...
- CLR 调试体系结构
公共语言运行时 (CLR) 调试 API 专门用作操作系统内核的一部分. 在非托管代码中,当程序生成异常时,内核将暂停执行进程,并使用 Win32 调试 API 将异常信息传递给调试器. CLR 调试 ...