Django之form表单常用字段与插件
from django.shortcuts import render,HttpResponse
from django import forms
from app01 import models
from django.core.validators import RegexValidator
import re
from django.core.exceptions import ValidationError # Create your views here. #自定义校验函数,直接在字段validators中使用
def name_valid(value):
name_re=re.compile(r'^[a-zA-Z_]+$')
if not name_re.match(value):
raise ValidationError("只能以字母下划线开头!") class Myform(forms.Form): name = forms.CharField(
# required=True, # 默认为True
label='用户名',
min_length=2,
max_length=6,
initial='abc', # 默认值
help_text='长度为2到6个字符!', # 帮助信息
error_messages=[{ # 自定义错误提示信息(默认为英文)
'required': '不能为空!',
'min_length': '不能少于2个字符!'
}],
validators=[RegexValidator(r'^(\w)+$','用户名只能有字母数字下划线组成!'), name_valid], # 自定义校验规则(列表中放自定义函数名,或者引入django内置的RegexValidator校验器)
# disabled=True#默认为True显示 ) # 密文
password = forms.CharField(
widget=forms.TextInput(attrs={'type': 'password'}),
)
# 日期
birth = forms.DateField(
widget=forms.TextInput(attrs={'type': 'date'})
)
# 单选
sex = forms.ChoiceField(
choices=[('', '男 '), ('', '女')],
# widget=forms.Select()#下拉单选(默认)
# widget=forms.RadioSelect()#正常单选 # widget = forms.CheckboxInput()#记住账号密码(label='记住账号密码',initial='checked',choices=[('True',1),('False',0)])
)
#单选:通过orm显示数据
publish = forms.ModelChoiceField(
queryset=models.Publish.objects.all() # 只能用all结果才能正常显示,必须设置__str__,否则拿到是对象
# widget和ChoiceFiled一样设置
) # 多选
hobby = forms.MultipleChoiceField( choices=[('', 'wan '), ('', 'ee')],
# widget=forms.SelectMultiple()#下拉多选(默认)
# widget=forms.CheckboxSelectMultiple()#正常多选
)
#多选:通过orm显示数据
author = forms.ModelMultipleChoiceField(
queryset=models.Author.objects.all() # 只能用all结果才能正常显示,必须设置__str__,否则拿到是对象
# widget和MultipleChoiceField一样设置
) def __init__(self,*args,**kwargs):#初始化对字段进行样式设置
super().__init__(*args,**kwargs)
for filed in self.fields:
self.fields[filed].widget.attrs.update({'class':'form-control'}) def form(request):
if request.method=='GET':
form_obj=Myform()
return render(request, 'form.html', {'form_obj':form_obj})
else:
form_obj=Myform(request.POST)#对提交的数据进行组件类实例化
if form_obj.is_valid():#校验提交的数据对象(字段校验-->validators校验(RegexValidator模块或者自定义函数)-->局部钩子-->全局钩子)
print(form_obj.cleaned_data)#form_obj.clean_data已经校验完的所有值
return HttpResponse('ok')
else:
return render(request,'form.html',{'form_obj':form_obj})#检测到错误,刷新页面,保留原数据
Django之form表单常用字段与插件的更多相关文章
- Django之form表单组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- 转载:Django之form表单
转载: 一.使用form类创建一个表单 先定义好一个RegForm类: forms.py from django import forms # 导入forms类 class NameForm(form ...
- Django专题-form表单
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Django的form表单
html的form表单 django中,前端如果要提交一些数据到views里面去,需要用到 html里面的form表单. 例如: # form2/urls.py from django.contrib ...
- Django 11 form表单(状态保持session、form表单及注册实现)
Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...
- Django--分页器(paginator)、Django的用户认证、Django的FORM表单
分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...
- html/form表单常用属性认识
1.form表单常用属性练习 <style> .form1 { margin: auto; height: 900px; width: 500px; text-align: center; ...
- django中form表单的提交:
一,关于表单: 表单在百度百科的解释: 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...
- Django 之 form表单
Django中的Form表单 1.背景 平时我们在书写form表单时,经常都是手动的去写一些input标签,让用户输入一些功能,进行一些校验的判断,等等.Django中的form表单就能够帮我们去实现 ...
随机推荐
- memcache的缓存原理和应用
缓存原理 Memcache采用键值对存储方式.它本质是一个大的 hash表,key的最大长度为255个字符,最长过期时间为30天.它的内存模型如下:Memcache预先将可支配的内存空间进行分区(Sl ...
- koa+mysql实现增删改查-全栈之路(001)
Date: 2020-4-23 以前很少写文章,从今天开始我要挑战一下自己,连续输出100篇技术类文章.这100篇文章我尽量以实战案例为主. 如果你觉得本文还不错,记得关注或者给个 star,你们的赞 ...
- SpringBoot中使用Fastjson/Jackson对JSON序列化格式化输出的若干问题
来源 :https://my.oschina.net/Adven/blog/3036567 使用springboot-web编写rest接口,接口需要返回json数据,目前国内比较常用的fastjso ...
- Image Filter and Recover
这是CS50的第四次大作业,顺便学习了图像的入门知识. 基础 黑白图(bitmap)的每个像素点只能取值0/1,1代表白色,0代表黑色. 常见的图片格式有JPEG/PNG/BMP,这些格式都支持RGB ...
- Visual Studio Code 缩放设置
Windows下的软件的操作都很类似,所以刚开始使用vs code的时候习惯性地使用Ctrl+鼠标滚轮进行缩放,然而在vs code上不管用. 在vs code中有两类缩放: 一.整体缩放:包括菜单栏 ...
- ELK+kafka日志收集分析系统
环境: 服务器IP 软件 版本 192.168.0.156 zookeeper+kafka zk:3.4.14 kafka:2.11-2.2.0 192.168.0.42 zookeeper+kaf ...
- HTML往div中赋值
HTML中往div赋值 <div id="mazey">content</div> 使用JavaScript: var mazey=document.get ...
- SQL语言概况(4.1)
SQL语言概况(4.1) 目录 SQL语言概况(4.1) 4.1 SQL语言概况 4.1.1 历史及标准简介 4.1.2 SQL语言定义及特点 4.1.3 使用说明 参考资料: 数据库原理及设计(第3 ...
- 51单片机putchar函数的说明
原文排版远些乱,整理了一下. #include <reg51.h> #define XON 0x11 /*串口流控制符 启动*/ #define XOFF 0x13 /*串口流控制符 中断 ...
- 加速你的网络!软路由构建 去AD+国内域名加速解析+抗污染+速度优选 与PSW无缝集成 综合方案
本方案利用OpenWrt搭建4级DNS,实现 去AD + 国内域名加速解析 + 抗污染(域名解析按地区分流)+ 访问速度优选. 方案涉及部分软件配置细节可以参照之前博文:https://www.cnb ...