python全栈开发day73-Django认证系统

1、Form组件css

  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                     
 59 2. 今日内容
 60     1.     auth认证
 61         默认Django内置的认证系统, 默认在数据库中使用auth_user
 62         from django.contrib import auth
 63         1. 建立一个超级用户
 64             python manage.py createsuperuser
 65         2. 验证用户名和密码是否正确
 66             user = auth.authenticate(request, username, password)
 67         3. 登陆
 68             auth.login(request, user)   --> user是上一步的获得的user对象
 69         4. 注销
 70             auth.logout(request)        --> 将当前请求的session数据删除
 71         
 72         5. 登陆认证的装饰器
 73             auth.decorators.login_required
 74             默认跳转的登陆url: /accounts/login/
 75             在settings.py中 配置 LOGIN_URL = "你的登陆url"
 76         
 77         6. is_authenticated()
 78             判断当前request.user是否通过认证,通过认证就返回True,不然是False
 79             
 80         7. AuthenticationMiddleware中间件究竟作了什么?
 81             request.user = user, 匿名用户对象
 82         
 83         8. create_user()
 84         9. create_superuser()
 85         10. check_password()
 86         11. set_password()
 87     
 88     2. 扩展默认的auth_user表:
 89         from django.contrib.auth.models import AbstractUser
 90         class UserInfo(AbstractUser):
 91             # 扩展auth模块默认的数据表
 92             phone = models.CharField(max_length=11)
 93         注意事项:
 94             1. 告诉Django使用个人UserInfo表来作用户的管理
 95                 在settings.py中配置:
 96                 AUTH_USER_MODEL = "app名.UserInfo"
 97     
 98 
 99     3. BBS/CMS
100         1. 需求分析
101             1. 登陆注册、注销
102             2. 文章分页
103             3. 评论
104             4. 点赞
105             5. 发帖
106             6. 查看文章
107             7. 博客站点主题自定制
108             8. 博客应该有分类
109 
110         
111         2. 表结构设计
112             1. 用户表
113             2. 文章表
114             3. 评论          多对一关联文章
115             4. 点赞/反对     多对一关联文章  一个用户只能对一篇文章点赞一次
116             5. 博客主题表    存的每一个博主的主题css文件
117             6. 文章分类表    一对多关联文章
118             7. 文章标签表    多对多关联文章表
119             
120         每一个组 设计一套models.py ,最迟周日的晚上8:00以前发到我QQ邮箱
121         
122 3. 今日任务
123     1. 好好玩,调整状态 准备进入项目阶段
124 
125 4. 周末任务
126     1. authBlog整理一下
127     2. 本身在课上注册登陆的例子基础上实现一个用户修改密码的功能
128         1. 登陆的用户才能修改密码
129         2. 修改密码以前先校验原密码是否正确
130         3. 加上Bootstrao样式
131     3. 设计BBS项目表结构
132     4. 复习jQuery和form,周一要用!!!
133     
134         
135         
136         
137         
138         
139         
140         
141         
142         
143         
144         
145         
146             
147         
148             
Django Form组件

 

2、Django认证系统html

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

 

https://www.cnblogs.com/liwenzhou/p/9030211.html数据库

相关文章
相关标签/搜索