Form组件
- form表单(验证;保留上次内容)
-
- Ajax(验证;无需上次内容)
- 返回HttpResponse
- 前端:跳转或错误信息

1. Form组件扩展:

1.简单扩展
利用Form组件自带的正则扩展:
a. 方式一
from django.forms import Form
from django.forms import widgets
from django.forms import fields
from django.core.validators import RegexValidator

class MyForm(Form):
user = fields.CharField(
error_messages={'invalid': '...'},
validators=[RegexValidator(r'^[0-9]+$', '请输入数字'), RegexValidator(r'^159[0-9]+$', '数字必须以159开头')],
)
b. 方式二
from django.forms import Form
from django.forms import widgets
from django.forms import fields
from django.core.validators import RegexValidator

class MyForm(Form):
user = fields.RegexField(r'^[0-9]+$',error_messages={'invalid': '...'})

2.基于源码流程
a. 单字段
from django.core.exceptions import NON_FIELD_ERRORS, ValidationError
class AjaxForm(forms.Form):
username = fields.CharField()
user_id = fields.IntegerField(
widget=widgets.Select(choices=[(0,'alex'),(1,'刘皓宸'),(2,'杨建'),])
)
# 自定义方法 clean_字段名
# 必须返回值self.cleaned_data['username']
# 如果出错:raise ValidationError('用户名已存在')
def clean_username(self):
v = self.cleaned_data['username']
if models.UserInfo.objects.filter(username=v).count():
# 整体错了
# 自己详细错误信息
raise ValidationError('用户名已存在')
return v
def clean_user_id(self):
return self.cleaned_data['user_id']

b. 整体错误验证
class AjaxForm(forms.Form):
username = fields.CharField()
user_id = fields.IntegerField(
widget=widgets.Select(choices=[(0,'alex'),(1,'刘皓宸'),(2,'杨建'),])
)
# 自定义方法 clean_字段名
# 必须返回值self.cleaned_data['username']
# 如果出错:raise ValidationError('用户名已存在')
def clean_username(self):
v = self.cleaned_data['username']
if models.UserInfo.objects.filter(username=v).count():
# 整体错了
# 自己详细错误信息
raise ValidationError('用户名已存在')
return v
def clean_user_id(self):
return self.cleaned_data['user_id']

def clean(self):
value_dict = self.cleaned_data
v1 = value_dict.get('username')
v2 = value_dict.get('user_id')
if v1 == 'root' and v2==1:
raise ValidationError('整体错误信息')
return self.cleaned_data

PS: _post_clean

2. Django序列化
a.对象
b.字典
c.元祖

===================================
预习:
Model操作补充:http://www.cnblogs.com/wupeiqi/articles/6216618.html
Ajax全套: http://www.cnblogs.com/wupeiqi/articles/5703697.html
上传文件

博客示例:...

转载于:https://www.cnblogs.com/pandaboy1123/p/8915532.html

Pyhton学习——Day60相关推荐

  1. pyhton学习实例demo

    pyhton学习实例demo 一行代码输出特定字符"Love"拼成的心形 一行代码打印九九乘法表 一行代码打印九九乘法表 一行代码计算出1-100之间的素数(两个版本) 一行代码输 ...

  2. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  3. pyhton学习之找出单词的个数并进行排序

    在学习C的时候,我们经常会做这样的算法题来提高我们的编程能力,然而在python中使用封装好的类库,就可以简单完成. 需要的模块有:re :该模块可以通过一定的规则寻找目标   Counter主要是用 ...

  4. Pyhton学习笔记第一天(Python基本语句)

    Python学习笔记第一天 注释 行注释 块注释 输出语句 举一反三 标识符 举一反三 多行语句 结束语 注释 什么是注释,注释相当于备注的信息,也可以在调试代码的时候隐藏执行代码,但只适合新手.老手 ...

  5. Pyhton学习——Day3

    # li = [1,12,9,"age","alex"] # #列表表示为[]括起来 # #列表用","分割每个元素 # #列表中的元素可以 ...

  6. Pyhton学习——Day9

    #文件操作的其他方法 ###############################################################################文件的内置操作函数# ...

  7. day10 Pyhton学习

    一.昨日内容回顾 函数: 定义:对功能或者动作的封装 def 函数名(形参): 函数体 函数名(实参) return:  返回,当程序运行到return的时候,终止函数的执行 一个函数一定拥有返回值 ...

  8. pyhton学习,day1作业,用户名密码登录模块

    要求,通过用户名密码登录,登录错误3次,锁定用户名 1 # coding=utf-8 2 # Author: RyAn Bi 3 4 import os, sys #调用系统自己的库 5 6 acco ...

  9. pyhton学习-1

    Python的变量不需要声明,可以直接输入. 内置函数type(), 用以查询变量的类型. 例如: print type(a) 如果想让 a 存储不同的数据,不需要删除原有变量就可以直接赋值. pri ...

最新文章

  1. CSDN - 进程结束后new出的内存会回收吗?
  2. colsure php_PHP Closure(闭包)类详解
  3. android 置灰不可点击,Android Studio 运行按钮灰色的完美解决方法
  4. h5仿微信聊天(高仿版)、微信聊天表情|对话框|编辑器
  5. 全球75亿美元的网络安全险 会是保险业下一块金矿吗?
  6. 神策数据荣登《中国企业家》“未来之星”榜单
  7. 成功人士都有的好习惯
  8. 现有类 成 mfc类_女人不想成“黄脸婆”,4类食物是衰老“催化剂”,女人尽量远离_氧化...
  9. 网站选择按钮点击无反应?_Win10系统电脑鼠标左键单击没有反应的解决办法
  10. 【IoT】创业:产品生产之老化测试
  11. IndexError: index 0 is out of bounds for axis 0 with size 0
  12. python打砖块游戏算法设计分析_Python打砖块
  13. ROS PGM格式文件详解 | 九七的ROS
  14. Mysql 面向企业级开发(一)
  15. 关于api-ms-win-crt-runtimel1-1-0.dll缺失引发的解决方案
  16. 美剧24中的SAP软件
  17. vectorvn1610报价_VECTOR VN1610 CAN Network 通讯模块
  18. 铁路工程词汇-中英对照
  19. numpy的sum函数的axis和keepdim参数详解
  20. 智能CAN总线隔离中继器

热门文章

  1. A study on ILC for linear discrete systems with single delay
  2. 8位十六进制转换32位十六进制_网络中的数制系统--二进制十六进制与十进制之间的相互转换...
  3. 小米蓝牙左右互联_宅家侃数码,小巧灵动,小米户外蓝牙音箱mini伴你度过疫情期...
  4. AcWing 786. 第k个数
  5. 算法基础部分4-深度优先搜索
  6. window创建计划自动启动服务器,WINDOWS2008计划任务无法启动
  7. 魅族使用华为鸿蒙,魅族官宣接入华为鸿蒙,以后我们还能用魅族自家的flyme系统吗?...
  8. 笔记(3)——Clustering the tagged web
  9. 一款超级实用的SuperLayout
  10. JsonPath小结