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數據庫

相關文章
相關標籤/搜索