Django--form基础
一、Django--form功能
用户提交数据验证
生成html标签
二、基础实例
需求
利用Django的form功能,接收用户注册信息。
urls.py
1
2
3
4
5
|
from app01 import views urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r '^user_list/' , views.user_list), ] |
app01/views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
from django import forms class UserInfo(forms.Form): #创建类,必须继承自forms.Form email = forms.EmailField() #生成字段,自动创建标签 host = forms.CharField() port = forms.CharField() mobile = forms.CharField() def user_list(request): obj = UserInfo() if request.method = = "POST" : user_input_obj = UserInfo(request.POST) #将所有提交的数据封装到自定义form类的对象里 if user_input_obj.is_valid(): #判断提交的数据是否合法,有一个错误就是false data = user_input_obj.clean() #如果合法,打印所有信息 print data else : #如果不合法,将所有错误信息返回给页面,到页面后再利用变量的取值输出每个错误 error_msg = user_input_obj.errors #默认是as_ul()列表形式,可以改成as_json()和as_data()。【看d18-16视频】 return render(request, 'user_list.html' ,{ 'obj' :user_input_obj, 'errors' :error_msg}) return render(request, 'user_list.html' ,{ 'obj' :obj}) |
templates/user_list.py
1
2
3
4
5
6
7
8
9
|
< body > < form action = "/user_list/" method = "post" > < p >主机:{{ obj.host }}< span >{{ errors.host }}</ span ></ p > <!--obj是创建form类的实例化对象,host是变量--> < p >端口:{{ obj.port }}< span >{{ errors.port }}</ span ></ p > < p >邮箱:{{ obj.email }}< span >{{ errors.email }}</ span ></ p > < p >手机:{{ obj.mobile }}< span >{{ errors.mobile }}</ span ></ p > < input type = "submit" value = "submit" > </ form > </ body > |
browser
三、定制化
1、根据正则判断输入
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import re from django.core.exceptions import ValidationError def mobile_validate(value): mobile_re = re. compile (r '^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$' ) if not mobile_re.match(value): raise ValidationError( '手机号码格式错误' ) from django import forms class UserInfo(forms.Form): email = forms.EmailField() host = forms.CharField() port = forms.CharField() mobile = forms.CharField( validators = [mobile_validate, ], #根据正则判断 ) |
browser
2、select类型
views.py
1
2
3
4
5
6
|
class UserInfo(forms.Form): user_type_choice = ( #先设定选项 ( 0 , u '普通用户' ), ( 1 , u '高级用户' ), ) user_type = forms.IntegerField(widget = forms.widgets.Select(choices = user_type_choice,attrs = { 'class' : "form-control" })) |
user_list.html
1
|
< p >用户类型:{{ obj.user_type }}< span >{{ errors.user_type }}</ span ></ p > |
browser
3、其它设置
views.py
1
2
3
4
5
6
|
class UserInfo(forms.Form): email=forms.EmailField( required=False, error_messages={ 'required' : u '邮箱不能为空' , 'invalid' : u '邮箱格式错误' }, widget=forms.TextInput(attrs={ 'class' : "form-control" , 'placeholder' : u '邮箱' }) ) |
Django--form基础的更多相关文章
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Python之路【第十六篇】:Django【基础篇】
Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...
- Django web 基础
一.Django概述 Django大而全; 创建Django工程:django-admin startproject sitename 创建django之后生成的目录结构如下: Project Pro ...
- Python开发【第二十一篇】:Web框架之Django【基础】
Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...
- django: form fileupload - 1
本节介绍 Form 中一些字段类型的使用,以文件上传字段 FileField 为例:(注,其它字段和相关用法见官方文档中的 Forms -> Built-in Fields) 一,配置 urls ...
- Django笔记 —— 基础部分总结
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django 07 Django模型基础2 (常用查询和多表关联)
Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...
- Django的基础操作总结
1:准备开始 建立一个新的project: django-admin.py startproject XXXXXX(名称) 建立一个新的App:python manage.py startapp XX ...
- 巩固复习(Django最基础的部分_具体查看官方文档)
Django学习路1 1.脚本不能随便运行,没准 linux 运行完就上不去了 2.pip 在 linux 上 写 pip3 同理 python 写为 python3 3.在 pycharm 上安装库 ...
- django form和form组件
form介绍: 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是 ...
随机推荐
- freemarket使用自定义标签 注解【项目实际使用】
页面达到效果 [主html页面代码] <!-- 合作单位 版块 -->[#include 'inc_project_succ_coo.html'/]['inc_project_succ_c ...
- MyEclipse2014安装操作步骤+破解
第一步 第二步 第三步 第四步 第五步 第六步 破解操作步骤 1.安装完成 MyEclipse2014(适用于 2013 等版本)后,不要打开软件.解压破解文件压缩包,得到一下文件列表:双击 run. ...
- 常用的文件数据类型mime
有时在编程中会用到文件的类型,比如http的请求或相应header头信息,文件上传时自定义头信息等. ai application/postscript aif audio/x-aiff aifc a ...
- GZip压缩与解压缩
GZIP的压缩与解压缩代码: public static class CompressionHelper { /// <summary> /// Compress the byte[] / ...
- Linux多网卡的时候执行机器Ip
在Linux部署的时候,经常会有多网卡的情况出现,这时候项目又需要指定Ip.在这种情况下,要配置linux机子的host,指定里头要使用的ip地址,否则linux机子不知道去找哪个ip. 一.查看本机 ...
- Java文件压缩优化工具(ProGuard) 软件介绍 Soft content
ProGuard是一款免费的Java类文件的压缩.优化.混肴器.它可以帮你删除没用的类,字段,方法与属性,使字节码最大程度地优化,使用简短且无意义的名字来重命名类.字段和方法 .目前eclipse已经 ...
- DLatch by Verilog
//-----------------------------------------------------// Design Name : dlatch_reset// File Name : ...
- Volley的post使用
直接看代码,注意在manifest中加入Internet权限 <uses-permission android:name="android.permission.INTERNET&qu ...
- spring的@Transactional注解详细用法(转)
概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性.Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型, ...
- Nginx安装过程
1. 首先 ./configure --prefix=/usr/common/nginx --with-http_stub_status_module 报如下错误: 2. 从报的错可以看出缺少pcre ...