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---mongodb---redis比较
Memcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右). ...
- 如何在 Inno Setup 中执行命令行的命令
Pascal Scripting: Exec Prototype: function Exec(const Filename, Params, WorkingDir: String; const Sh ...
- Libra教程之:执行Transactions
文章目录 Transactions是什么 Transactions运行的基础条件 Transactions的结构 执行Transactions Transactions是什么 我们讲到了Libra是一 ...
- openlayers3中Overlay用法
Overlay 从名字看,是覆盖图.覆盖物的意思,主要的用途就是在地图之上再覆盖一层,用以显示额外的可见元素,可见元素一般是 HTML 元素,利用 overlay,可以将可见元素放置到地图的任意位置, ...
- php-fpm7 启动脚本
[root@bbs init.d]$ cat php-fpm7 #!/bin/sh # DateTime:20170918 # Source function library. . /etc/rc.d ...
- 网速慢?不!可能是DNS出了问题! 公共DNS优选之 BAT 百度、腾讯、阿里、谷歌DNS哪个更快?
如果一下还是解决不了你的问题请这边走 首先是Google的DNS: 8.8.8.8 丢包严重 PASS但是扶墙的时候是必备的,如果有扶墙的需求的话可以备用. 二.百度DNS 180.76.76.76 ...
- Floyd —Warshall(最短路及其他用法详解)
一.多元最短路求法 多元都求出来了,单源的肯定也能求. 思想是动态规划的思想:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设Dis(A ...
- codeforce 270C Magical Boxes
C. Magical Boxes Emuskald is a well-known illusionist. One of his trademark tricks involves a set of ...
- 2020年ubuntu1804安装nginx最新稳定版1.16详细教程笔记
第一次使用nginx是2007年,当时主流还是apache.nginx横空出世,在web2.0的推动下,迅速崛起.眼下已是绝对的主流了. 当时,还有一个轻量级的lighttpd,是德国人写,刚开始还并 ...
- 11.秋招复习简单整理之什么是ICMP协议,ICMP协议的功能是什么?
ICMP即 InternetControlMessageProtocol,是网络控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息指网络通不通.主机是否 ...