一、Form组件

 day73  2018-08-10

 1. 内容回顾
1. form表单组件
1. 常用字段
1. CharField()
2. ChoiceField()
2. 参数或配置
1. label="label标签显示的文本内容"
2. initial="默认值"
3. widget=forms.widgets.TextInput() --> <input typle='text'/>
widget=forms.widgets.PasswordInput(
attrs={"class": "c1", "s12": "hao"}
)
4. required=False --> is_valid()校验的时候该字段没有值也不报错
5. error_messages={"required": "xx字段不能为空", "max_length": "xx字段最多不能超过位数"}
6. max_length
7. min_length 8. validators=[验证器1,验证器2, ...]
3. 验证器
1. 内置正则验证
from django.core.validators import RegexValidator
validators=[RegexValidator(r'^1[3-9]\d{9}$', "手机号码格式不正确!"), ]
2. 自定义方法实现
from django.core.exceptions import ValidationError
# 自定义校验的方法
def name_check(value):
if 'jinpingmei' in value:
raise ValidationError("不符合社会主义核心价值观!")
else:
return value validators=[name_check, ],
4. 钩子函数
0. self.cleaned_data --> 用来存放经过验证数据的大字典
self.add_error("字段名", "错误提示信息") 1. 局部钩子(Hook)
通过自定义一个clean_字段名的方法实现字段的校验
2. 全局钩子
此时 每个字段独立的校验都走完了,cleaned_data中已经存放着所有字段的数据
def clean(self):
print("我可是看过源码的人,我知道你肯定会执行这个方法!")
# 重写父类的clean方法
# 该clean方法, 在每个字段都校验通过之后才调用执行
pwd = self.cleaned_data.get("pwd")
re_pwd = self.cleaned_data.get("re_pwd") if re_pwd and re_pwd == pwd:
# 确认密码和密码相同, 正常
return self.cleaned_data
else:
# 确认密码和密码不同
self.add_error('re_pwd', "两次密码不一致") # ?
raise ValidationError("两次密码不一致") 2. 今日内容
1. auth认证
默认Django内置的认证系统, 默认在数据库中使用auth_user
from django.contrib import auth
1. 创建一个超级用户
python manage.py createsuperuser
2. 验证用户名和密码是否正确
user = auth.authenticate(request, username, password)
3. 登录
auth.login(request, user) --> user是上一步的得到的user对象
4. 注销
auth.logout(request) --> 将当前请求的session数据删除 5. 登录认证的装饰器
auth.decorators.login_required
默认跳转的登录url: /accounts/login/
在settings.py中 配置 LOGIN_URL = "你的登录url" 6. is_authenticated()
判断当前request.user是否经过认证,经过认证就返回True,否则是False 7. AuthenticationMiddleware中间件究竟做了什么?
request.user = user, 匿名用户对象 8. create_user()
9. create_superuser()
10. check_password()
11. set_password() 2. 扩展默认的auth_user表:
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
# 扩展auth模块默认的数据表
phone = models.CharField(max_length=11)
注意事项:
1. 告诉Django使用我的UserInfo表来做用户的管理
在settings.py中配置:
AUTH_USER_MODEL = "app名.UserInfo" 3. BBS/CMS
1. 需求分析
1. 登录注册、注销
2. 文章分页
3. 评论
4. 点赞
5. 发帖
6. 查看文章
7. 博客站点主题自定制
8. 博客应该有分类 2. 表结构设计
1. 用户表
2. 文章表
3. 评论 多对一关联文章
4. 点赞/反对 多对一关联文章 一个用户只能对一篇文章点赞一次
5. 博客主题表 存的每个博主的主题css文件
6. 文章分类表 一对多关联文章
7. 文章标签表 多对多关联文章表 每个组 设计一套models.py ,最迟周日的晚上8:00之前发到我QQ邮箱 3. 今日任务
1. 好好玩,调整状态 准备进入项目阶段 4. 周末任务
1. authBlog整理一下
2. 自己在课上注册登录的例子基础上实现一个用户修改密码的功能
1. 登录的用户才能修改密码
2. 修改密码之前先校验原密码是否正确
3. 加上Bootstrao样式
3. 设计BBS项目表结构
4. 复习jQuery和form,周一要用!!!

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. Docker部署tomcat及应用

    前提Docker已安装完成. 由于测试网无法直接连入互联网,所以在本机虚拟机内下载tomcat镜像并传到测试网主机中. 虚拟机内执行 查找tomcat镜像: # docker search tomca ...

  2. $Django 等web框架,交互,基础入门

    1 web 应用2 c/s 和bs架构3 python中的web框架    a :socket    b:路由跟视图函数匹配关系    c:模板渲染 django: uwsgi/wsgiref    ...

  3. Windows10下Django虚拟环境配置和简单入门实例

    环境win10家庭版64位 + python 3.5 + Django 1.8.2 1.创建virtualenv目录 开始/运行/cmd回车,进入cmd窗口,到自己指定的目录下创建virtualenv ...

  4. LabVIEW 获取本机多个ip地址

    图 1   网上见了好多设置的,都没讲清楚,在这里整理一下本机ip地址的获取问题.关键在"字符串向ip地址转换"函数的设置上面,见下图2,选择多输出就能获取本机的多个ip地址,若不 ...

  5. ubuntu 精简配置

    是这样的情况,在windows 7的vm虚拟机上装了Ubuntu 12.04 Desktop,主要是想用它的gui, 所以把不要的给删了. sudo apt-get -y --auto-remove ...

  6. SQL Server异常汇总

    1.特定用户名无法访问数据库 例如需要使用sa用户名访问School数据库失败,提示如下: (你要设置的)数据库--属性--文件--所用者设为Sa,回到用户映射查看,已勾选上. 还有一些情况 1)将登 ...

  7. [swoole]swoole常见问题总汇

    1.在daemon模式下Task异步任务写入文件需要采用绝对路径: 1.Task异步任务中操作数据库,如果仅仅只是在启动程序之初进行一次数据库链接,链接会在一定的时间后自动断开,应对这样的情况的最好办 ...

  8. response.setContentType()的String参数及对应类型

    response.addHeader("Content-Disposition", "attachment;filename="+ filename); res ...

  9. Vue中的render函数随笔

    使用vue-cli创建项目后,再main.js里面有这样一段代码: new Vue({ render:h => h(App) }).$mount('#app') render函数是渲染一个视图, ...

  10. swift 学习- 25 -- 协议 02

    // 通过扩展添加协议一致性 // 即便无法修改源代码, 依然可以通过扩展 令已有类型遵循并符合协议, 扩展可以为已有类型添加属性, 方法, 下标 以及构造器, 因此可以符合协议中的相应要求 // 注 ...