一、Form组件

  1. day73 2018-08-10
  2.  
  3. 1. 内容回顾
  4. 1. form表单组件
  5. 1. 常用字段
  6. 1. CharField()
  7. 2. ChoiceField()
  8. 2. 参数或配置
  9. 1. label="label标签显示的文本内容"
  10. 2. initial="默认值"
  11. 3. widget=forms.widgets.TextInput() --> <input typle='text'/>
  12. widget=forms.widgets.PasswordInput(
  13. attrs={"class": "c1", "s12": "hao"}
  14. )
  15. 4. required=False --> is_valid()校验的时候该字段没有值也不报错
  16. 5. error_messages={"required": "xx字段不能为空", "max_length": "xx字段最多不能超过位数"}
  17. 6. max_length
  18. 7. min_length
  19.  
  20. 8. validators=[验证器1,验证器2, ...]
  21. 3. 验证器
  22. 1. 内置正则验证
  23. from django.core.validators import RegexValidator
  24. validators=[RegexValidator(r'^1[3-9]\d{9}$', "手机号码格式不正确!"), ]
  25. 2. 自定义方法实现
  26. from django.core.exceptions import ValidationError
  27. # 自定义校验的方法
  28. def name_check(value):
  29. if 'jinpingmei' in value:
  30. raise ValidationError("不符合社会主义核心价值观!")
  31. else:
  32. return value
  33.  
  34. validators=[name_check, ],
  35. 4. 钩子函数
  36. 0. self.cleaned_data --> 用来存放经过验证数据的大字典
  37. self.add_error("字段名", "错误提示信息")
  38.  
  39. 1. 局部钩子(Hook
  40. 通过自定义一个clean_字段名的方法实现字段的校验
  41. 2. 全局钩子
  42. 此时 每个字段独立的校验都走完了,cleaned_data中已经存放着所有字段的数据
  43. def clean(self):
  44. print("我可是看过源码的人,我知道你肯定会执行这个方法!")
  45. # 重写父类的clean方法
  46. # 该clean方法, 在每个字段都校验通过之后才调用执行
  47. pwd = self.cleaned_data.get("pwd")
  48. re_pwd = self.cleaned_data.get("re_pwd")
  49.  
  50. if re_pwd and re_pwd == pwd:
  51. # 确认密码和密码相同, 正常
  52. return self.cleaned_data
  53. else:
  54. # 确认密码和密码不同
  55. self.add_error('re_pwd', "两次密码不一致") # ?
  56. raise ValidationError("两次密码不一致")
  57.  
  58. 2. 今日内容
  59. 1. auth认证
  60. 默认Django内置的认证系统, 默认在数据库中使用auth_user
  61. from django.contrib import auth
  62. 1. 创建一个超级用户
  63. python manage.py createsuperuser
  64. 2. 验证用户名和密码是否正确
  65. user = auth.authenticate(request, username, password)
  66. 3. 登录
  67. auth.login(request, user) --> user是上一步的得到的user对象
  68. 4. 注销
  69. auth.logout(request) --> 将当前请求的session数据删除
  70.  
  71. 5. 登录认证的装饰器
  72. auth.decorators.login_required
  73. 默认跳转的登录url: /accounts/login/
  74. settings.py 配置 LOGIN_URL = "你的登录url"
  75.  
  76. 6. is_authenticated()
  77. 判断当前request.user是否经过认证,经过认证就返回True,否则是False
  78.  
  79. 7. AuthenticationMiddleware中间件究竟做了什么?
  80. request.user = user, 匿名用户对象
  81.  
  82. 8. create_user()
  83. 9. create_superuser()
  84. 10. check_password()
  85. 11. set_password()
  86.  
  87. 2. 扩展默认的auth_user表:
  88. from django.contrib.auth.models import AbstractUser
  89. class UserInfo(AbstractUser):
  90. # 扩展auth模块默认的数据表
  91. phone = models.CharField(max_length=11)
  92. 注意事项:
  93. 1. 告诉Django使用我的UserInfo表来做用户的管理
  94. settings.py中配置:
  95. AUTH_USER_MODEL = "app名.UserInfo"
  96.  
  97. 3. BBS/CMS
  98. 1. 需求分析
  99. 1. 登录注册、注销
  100. 2. 文章分页
  101. 3. 评论
  102. 4. 点赞
  103. 5. 发帖
  104. 6. 查看文章
  105. 7. 博客站点主题自定制
  106. 8. 博客应该有分类
  107.  
  108. 2. 表结构设计
  109. 1. 用户表
  110. 2. 文章表
  111. 3. 评论 多对一关联文章
  112. 4. 点赞/反对 多对一关联文章 一个用户只能对一篇文章点赞一次
  113. 5. 博客主题表 存的每个博主的主题css文件
  114. 6. 文章分类表 一对多关联文章
  115. 7. 文章标签表 多对多关联文章表
  116.  
  117. 每个组 设计一套models.py ,最迟周日的晚上8:00之前发到我QQ邮箱
  118.  
  119. 3. 今日任务
  120. 1. 好好玩,调整状态 准备进入项目阶段
  121.  
  122. 4. 周末任务
  123. 1. authBlog整理一下
  124. 2. 自己在课上注册登录的例子基础上实现一个用户修改密码的功能
  125. 1. 登录的用户才能修改密码
  126. 2. 修改密码之前先校验原密码是否正确
  127. 3. 加上Bootstrao样式
  128. 3. 设计BBS项目表结构
  129. 4. 复习jQueryform,周一要用!!!

Django Form组件

二、Django认证系统

http://wuchengyi.com/post/16/

https://www.cnblogs.com/liwenzhou/p/9030211.html

python全栈开发day73-Django认证系统的更多相关文章

  1. Python全栈开发:django网络框架(一)

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  2. python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)

    昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...

  3. Python全栈开发:django网络框架(二)

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...

  4. python全栈开发_day17_时间,系统模板和序列化

    一:时间模板 1)time 常用功能: time.sleep() time.time() time.strftime() import time print(time.strftime("% ...

  5. python全栈开发学习_内容目录及链接

    python全栈开发学习_day1_计算机五大组成部分及操作系统 python全栈开发学习_day2_语言种类及变量 python全栈开发_day3_数据类型,输入输出及运算符 python全栈开发_ ...

  6. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  7. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  8. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  9. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  10. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

随机推荐

  1. C/C++中如何在main()函数之前执行一条语句?

    在C语言中,如果使用GCC的话,可以通过attribute关键字声明constructor和destructor(C语言中如何在main函数开始前执行函数) #include <stdio.h& ...

  2. ASP.NET MVC5高级编程 之 Ajax

    jQuery不仅支持所有现代浏览器,包括IE.Firefox.Safari.Opera和Chrome等,还可以在编写代码和浏览器API冲突时隐藏不一致性(和错误). 1. jQuery jQuery擅 ...

  3. jetty去掉项目名称访问

    对于web项目,访问路径是否包含项目名称等修改访问路径的配置方式: 我所使用的是maven进行管理,只需要在pom.xml中进行如下配置 <!-- jetty插件 jetty:run--> ...

  4. Git操作----删除untracked files

    # 删除 untracked files git clean -f # 连 untracked 的目录也一起删掉 git clean -fd # 连 gitignore 的untrack 文件/目录也 ...

  5. VUE 图片验证码

    1. 概述 1.1 说明 在开发过程中,有时候需要使用图片验证码进行增加安全强度,在点击图片时更新新的图片验证码,记录此功能,以便后期使用. 2. 示例 2.1 vue示例代码 <templat ...

  6. Vue项目构建开发笔记(vue-lic3.0构建的)

    1.router.js里面 { path: '/about', name: 'about', // route level code-splitting // this generates a sep ...

  7. Struts2框架的概述及学习重点

    什么是Struts2的框架 * Struts2是Struts1的下一代产品,是在 struts1和WebWork的技术基础上进行了合并的全新的Struts 2框架. * 其全新的Struts 2的体系 ...

  8. Confluence 6 用户宏最佳实践

    这个页面为你在创建用户宏的最佳实践中包含了一些小技巧和建议. 为你的宏添加一个简短的描述 我们鼓励你为你的宏在 模板(Template )添加一个备注的描述,可以参考下面的显示的内容: ## Macr ...

  9. Swift可选项

  10. mongodb基类封装实例

    mongodb的基类 1 <?php 2 3 namespace BI\Service\MongoDB; 4 5 use MongoDB\Driver\BulkWrite; 6 use Mong ...