http://www.cnblogs.com/wupeiqi/articles/6144178.html

1 初始Form组件

# Form验证(初始Form组件验证)
- 问题:
- 无法记住上次提交的内容,页面刷新数据消失
- 重复进行提交数据的校验(数据是否为空,长度大小等等) - 解决方法:django Form组件
- 定义规则(数据的格式,字段必须和表单上name属性一致)
class LoginForm(Form):
实例化对象obj = LoginForm(request.POST) - 数据检验
obj.is_valid() - 提供详细错误信息(可以自定制错误提示)
-- 自定制错误信息,在类定义的时候通过error_messages参数
obj.errors - 提供符合规则的信息(类型是字典,数据库orm操作支持类型是字典操作)
obj.cleaned_data - Form实例:
a.定义规则
from django.forms import Form, fields
class LoginForm(Form):
# 定义规则,fields是正则验证
# usernma和password必须和前端模板Form里面input的name一致
username = fields.CharField(required=True, max_length=16, min_length=6,
error_messages={
'required': '不能为空',
'max_length': '长度必须少于16',
'min_length': '长度必须大于6'
})
password = fields.CharField(required=True, min_length=8,
error_messages={
'required': '不能为空',
'min_length': '长度必须大于8'
})
b.使用
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
obj = LoginForm(request.POST)
# 检验提交数据是否符合规则
if obj.is_valid():
print(obj.cleaned_data)
# obj.cleaned_data是一个字典,form表单提交的数据
#{'password': 'aaaaaaaaaa', 'username': 'alexadfdda'}
return redirect('http://www.baidu.com')
else:
return render(request, 'login.html', {'error': obj.errors}) # 作业(登录,注册)最终版
- 保留上次输入的值
- 用户数据格式的验证

[oldboy-django][2深入django]初始Form组件的更多相关文章

  1. Django(十五)Form组件

    参考博客: https://www.cnblogs.com/haiyan123/p/7778888.html http://www.cnblogs.com/wupeiqi/articles/61441 ...

  2. Django框架之Ajax和form组件

    一.Django框架之查漏补缺 1)models,字段概况 name = models.CharField(max_length=) age = models.IntegerField() price ...

  3. Django(十六)Form组件扩展

    http://www.cnblogs.com/wupeiqi/articles/6144178.html Form组件 - form表单(验证:保留上次内容) - - Ajax(验证:无需上次内容) ...

  4. django 之知识点总结以及Form组件

    一.model常用操作 1.13个API查询:all,filter,get ,values,values_list,distinct,order_by ,reverse , exclude(排除),c ...

  5. Django框架基础之Form组件

    服务端假设所有用户提交的数据都是不可信任的,所以Django框架内置了form组件来验证用户提交的信息 form组件的2大功能:       1 验证(显示错误信息)       2 保留用户上次输入 ...

  6. Django【第13篇】:Django之Form组件

    django 之知识点总结以及Form组件 一.model常用操作 1.13个API查询:all,filter,get ,values,values_list,distinct,order_by ,r ...

  7. form组件注册ajax登录auth认证及验证码

    本项目采用django自带的数据库 项目文件 models.py from django.db import models from django.contrib.auth.models import ...

  8. Django之Form组件

    Django之Form组件 本节内容 基本使用 form中字段和插件 自定义验证规则 动态加载数据到form中 1. 基本使用 django中的Form组件有以下几个功能: 生成HTML标签 验证用户 ...

  9. Python之路【第二十一篇】:Django之Form组件

    Django之Form组件   Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1. ...

随机推荐

  1. pycharm tab换为4个空格

    Edit => find => replace 然后勾上 Regex,上一行输入 \t,下一行输入4个空格.

  2. <已解决>使用selector设置Button按下松开的样式以及 <item> tag requires a 'drawable' attribute or child tag defining a drawable 报错

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="ht ...

  3. UVA 10564 Paths through the Hourglass(背包)

    为了方便打印路径,考虑从下往上转移.dp[i][j][S]表示在i行j列总和为S的方案, dp[i][j][S] = dp[i+1][left][S-x]+dp[i+1][right][S-x] 方案 ...

  4. 【洛谷2522】[HAOI2011] Problem b(莫比乌斯反演)

    点此看题面 大致题意: 求\(\sum_{x=a}^b\sum_{y=c}^d[gcd(x,y)==k]\). 关于另一道题目 在看这篇博客之前,如果你做过一道叫做[BZOJ1101][POI2007 ...

  5. 【BZOJ1833】[ZJOI2010] count 数字计数(数位DP)

    点此看题面 大致题意: 求在给定的两个正整数\(a\)和\(b\)中的所有整数中,\(0\sim9\)各出现了多少次. 数位\(DP\) 很显然,这是一道数位\(DP\)题. 我们可以用前缀和的思想, ...

  6. 2018.6.2 AndroidStudio项目中的问题:===== oast.LENGTH_LONG和Toast.LENGTH_SHORT分别对应多长时间

    oast.LENGTH_LONG和Toast.LENGTH_SHORT分别对应多长时间 在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量 ...

  7. python_47_Python2中字符编码与转码

    #python3默认是Unicode,Unicode是万国码,不管中文字符还是英文,所有的每个字符都占2个字节空间,16位 #python2默认是ascii码 #ascii码不能存中文,一个英文只能占 ...

  8. samba性能调优,调优后,性能增加30%

    global中增加下面内容. [global]    use sendfile = yes    write raw = yes    read raw = yes    max xmit = 655 ...

  9. bootstrap2文档的学习

    就像刚开始的 优雅,直观,强大的前端框架,让web开发更快,更容易,bootstrap给我的感觉就是把常用的布局,组件(导航,列表,按钮,表格),还有规范化颜色等等,同时它的遍历不至于此,他还支持了自 ...

  10. C# DateTime的使用

    获得当前系统时间: DateTime dt = DateTime.Now; Environment.TickCount可以得到“系统启动到现在”的毫秒值 DateTime now = DateTime ...