修改 urls.py,添加

    path('field.html', views.field),

在 templates 下创建 field.html, 内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="/field.html" enctype="multipart/form-data">
<div>f1: <label for="{{ obj.f1.id_for_label }}">{{ obj.f1.label }}</label>
{{ obj.f1.label_tag }}
{{ obj.f1 }}</div>
<div>f3: {{ obj.f3 }}</div>
<div>f4: {{ obj.f4 }}</div>
<div>f5: {{ obj.f5 }}</div>
<div>f6: {{ obj.f6 }}</div>
<div>f7: {{ obj.f7 }}</div>
<div>f8: {{ obj.f8 }}</div>
<input type="submit" value="提交">
</form>
</body>
</html>

修改 views.py

from app01 import forms
def field(request):
if request.method == 'GET':
obj = forms.FieldForm()
return render(request, 'field.html', {'obj': obj})
elif request.method == 'POST':
obj = forms.FieldForm(request.POST, request.FILES)
obj.is_valid()
print(obj.clean())
print(obj.errors.as_json())
return render(request, 'field.html', {'obj': obj})

修改 forms.py

from django.core.validators import RegexValidator

class FieldForm(DForms.Form):
f1 = fields.CharField(
max_length=6, # 最大长度
required=True, # 是否允许为空
initial='World', # 初始值
validators=[RegexValidator(r'^[0-9]+$', '请输入数字', code='e1'), RegexValidator(r'159[0-9]+$', '数字必须以159开头', code='e2')], # 自定义验证规则
error_messages={'required': 'Not null', 'invalid': 'wrong format', 'e1': 'input number', 'e2': 'begin with 159', 'max_length': 'too long'}, # 错误信息 show_hidden_initial=True, # 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
label='Hello', # 用于生成Label标签或显示内容
disabled=False, # 是否可以编辑
label_suffix=' -->', # Label内容后缀
) # f2 = fields.RegexField(r'159[0-9]+$') f3 = fields.FileField() f4 = fields.ChoiceField(
initial=2,
choices=[(1, '赵四'), (2, '刘能'), (3, '王舞')],
) f5 = fields.TypedChoiceField(
coerce=lambda x: int(x), # 对选中的每一个值进行一次转换
initial=2,
choices=[(1, '赵四'), (2, '刘能'), (3, '王舞')],
) f6 = fields.MultipleChoiceField(
initial=[2, 3],
choices=[(1, '赵四'), (2, '刘能'), (3, '王舞')],
) f7 = fields.SplitDateTimeField() f8 = fields.FilePathField(
path='app01', # 文件夹路径
recursive=True, # 递归下面的文件夹
allow_folders=True # 允许文件夹
)

Django Form 的主要内置字段介绍的更多相关文章

  1. {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm

    Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...

  2. Python的常用内置函数介绍

    Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...

  3. Python3的内置函数介绍

    Python3的官网链接:https://docs.python.org/3/library/functions.html?highlight=built#ascii 内置函数介绍 abs 绝对值函数 ...

  4. Django Form 内置字段

    常用字段: Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=None, 初始值 ...

  5. VS2019 开发Django(九)------内置模板和过滤器

    导航:VS2019开发Django系列 紧接上篇,继续介绍Django中的模板,考虑可能篇幅过长,所以分为两部分来讲,今天的主要内容: 1)内置模板和过滤器 母版,继承关系.头部导航和页脚,是需要与其 ...

  6. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  7. Python常用内置函数介绍

    Python提供了一个内联模块buildin.内联模块定义了一些开发中经常使用的函数,利用这些函数可以实现数据类型的转换.数据的计算.序列的处理等功能.下面将介绍内联模块中的常用函数. Python内 ...

  8. 常见 Bash 内置变量介绍

    目录 $0$1, $2 等等$#$* 与 "$*"$@ 与 "$@"$!$_$$$PPID$?$BASH$BASH_VERSION$EUID 与 $UID$GR ...

  9. 深入浅出CChart 每日一课——快乐高四第九课 于无声处,CChart内置功能介绍之数据存取篇

    笨笨长期以来一直使用Origin软件画图和处理数据,但Origin软件没有编程语言的接口.笨笨开发CChart的一个潜在的目标.是想实现Origin软件的功能.当然这是一个不可能达到的目标.Origi ...

随机推荐

  1. win10查看桌面壁纸路径

    如题,win10查看自己壁纸的缓存路径,就是找到壁纸的原图:在explorer里输入 %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Themes 1 ...

  2. Windows | Ubuntu18.04分别安装Matlab 2017b破解版

    首先下载好Windows和Ubuntu 版本的MATLAB 2017b 安装包, 1.Windows上安装,解压文件R2017b_win64_dvd1.iso和R2017b_win64_dvd2.is ...

  3. Metrics、Tracing、Logging的融合

    终极目标 OpenTelemetry的终态就是实现Metrics.Tracing.Logging的融合,作为CNCF可观察性的终极解决方案. Tracing:提供了一个请求从接收到处理完毕整个生命周期 ...

  4. Jmeter-Question之“HTTPS请求”

    前面在Jmeter-Question中有提到若干问题,有时间呢,我也会进行继续编写随笔,梳理自己的知识,本篇呢,便来记Jmeter发送https请求的过程 内容大致与http://blog.csdn. ...

  5. ShiroUtil 对密码进行加密

    ShiroUtil 对密码进行加密 package com.mozq.sb.shiro02.config; import org.apache.shiro.authc.SimpleAuthentica ...

  6. QTP10启动错误:Error creatingUnable to create configuration directory "C:UsersmR?ã? directory entry

    安装完之后打开就一直: 百度也不知道为哈子(莫非是中文的用户名?反正我不想重装系统),真是很气人. 我就直接创建了一个临时账户,登陆进去,就可以运行了:

  7. bzoj2093 Frog

    题目链接 思路 非常有趣的一道题. 先考虑如何找出第K远的位置. 因为给出的序列是单调的,所以对于位置\(i\)的前\(K\)远位置肯定是一个包含位置\(i\)的长度为\(k+1\)的区间.我们用\( ...

  8. 数组去重--ES6方法

    数组去重方法1:用es6的set和...扩展运算符 let arr = [1,2,3,4,4,5,2]; console.log([...new Set(arr)]) // [1, 2, 3, 4, ...

  9. 被“org.springframework.boot.web.support.SpringBootServletInitializer;”耽搁的两天

    org.springframework.boot.web.support.SpringBootServletInitializer 改为: org.springframework.boot.conte ...

  10. QQ音乐2019客户端-获取任意歌单完整歌曲列表和下载音乐文件方法

    步骤 1.在web网站上搜搜任意歌单 https://y.qq.com/#type=index/ 例如:中国好声音4.5.6.7.8季 打开后显示网址:  https://y.qq.com/n/yqq ...