""" 其實咱們在建立好一個django項目以後直接執行數據庫遷移命令會自動生成不少表 django_session auth_user django在啓動以後就能夠直接訪問admin路由,須要輸入用戶名和密碼,數據參考的就是auth_user表,而且還必須是管理員用戶才能進入 建立超級用戶(管理員) python3 manage.py createsuperuser 依賴於auth_user表完成用戶相關的全部功能 """
# 1.比對用戶名和密碼是否正確 user_obj = auth.authenticate(request,username=username,password=password) # 括號內必須同時傳入用戶名和密碼 print(user_obj) # 用戶對象 jason 數據不符合則返回None print(user_obj.username) # jason print(user_obj.password) # 密文 # 2.保存用戶狀態 auth.login(request,user_obj) # 相似於request.session[key] = user_obj # 主要執行了該方法 你就能夠在任何地方經過request.user獲取到當前登錄的用戶對象 # 3.判斷當前用戶是否登錄 request.user.is_authenticated() # 4.獲取當前登錄用戶 request.user # 5.校驗用戶是否登錄裝飾器 from django.contrib.auth.decorators import login_required # 局部配置 @login_required(login_url='/login/') # 全局配置 LOGIN_URL = '/login/' 1.若是局部和全局都有 該聽誰的? 局部 > 全局 2.局部和全局哪一個好呢? 全局的好處在於無需重複寫代碼 可是跳轉的頁面卻很單一 局部的好處在於不一樣的視圖函數在用戶沒有登錄的狀況下能夠跳轉到不一樣的頁面 # 6.比對原密碼 request.user.check_password(old_password) # 7.修改密碼 request.user.set_password(new_password) # 僅僅是在修改對象的屬性 request.user.save() # 這一步纔是真正的操做數據庫 # 8.註銷 auth.logout(request) # 9.註冊 # 操做auth_user表寫入數據 User.objects.create(username=username,password=password) # 寫入數據 不能用create 密碼沒有加密處理 # 建立普通用戶 User.objects.create_user(username=username,password=password) # 建立超級用戶(瞭解):使用代碼建立超級用戶 郵箱是必填的 而用命令建立則能夠不填 User.objects.create_superuser(username=username,email='123@qq.com',password=password)
from django.db import models from django.contrib.auth.models import User,AbstractUser # Create your models here. # 第一種:一對一關係 不推薦 # class UserDetail(models.Model): # phone = models.BigIntegerField() # user = models.OneToOneField(to='User') # 第二種:面向對象的繼承 class UserInfo(AbstractUser): """ 若是繼承了AbstractUser 那麼在執行數據庫遷移命令的時候auth_user表就不會再建立出來了 而UserInfo表中會出現auth_user全部的字段外加本身擴展的字段 這麼作的好處在於你可以直接點擊你本身的表更加快速的完成操做及擴展 前提: 1.在繼承以前沒有執行過數據庫遷移命令 auth_user沒有被建立,若是當前庫已經建立了那麼你就從新換一個庫 2.繼承的類裏面不要覆蓋AbstractUser裏面的字段名 表裏面有的字段都不要動,只擴展額外字段便可 3.須要在配置文件中告訴django你要用UserInfo替代auth_user(******) AUTH_USER_MODEL = 'app01.UserInfo' '應用名.表名' """ phone = models.BigIntegerField() """ 你若是本身寫表替代了auth_user那麼 auth模塊的功能仍是照常使用,參考的表頁由原來的auth_user變成了UserInfo 咱們bbs做業用戶表就是用的上述方式 """
# 1.需求分析 架構師+產品經理+開發者組長 在跟客戶談需求以前,會大體先了解客戶的需求,而後本身先設計一套比較好寫方案 在跟客戶溝通交流中引導客戶往咱們以前想好的方案上面靠 造成一個初步的方案 # 2.項目設計 架構師乾的活 編程語言選擇 框架選擇 數據庫選擇 主庫:MySQL,postgreSQL,... 緩存數據庫:redis、mongodb、memcache... 功能劃分 將整個項目劃分紅幾個功能模塊 找組長開會 給每一個組分發任務 項目報價 技術這塊須要多少人,多少天(一個程序員一天1500~2000計算(大體)) 產品經理公司層面 再加點錢 公司財務簽字確認 公司老闆簽字確認 產品經理去跟客戶溝通 後續須要加功能 繼續加錢 # 3.分組開發 組長找組員開會,安排各自功能模塊 咱們其實就是在架構師設計好的框架裏面填寫代碼而已(碼畜) 咱們在寫代碼的時候 寫完須要本身先測試是否有bug 若是是一些顯而易見的bug,你沒有避免而是直接交給了測試部門測出來 那你可能就須要被扣績效了(必定要跟測試小姐姐搞好關係) 薪資組成 15K(合理合規合法的避稅) 底薪 10K 績效 3K 崗位津貼 1K 生活補貼 1K # 4.測試 測試部門測試你的代碼 壓力測試 ... # 5.交付上線 1.交給對方的運維人員 2.直接上線到咱們的服務器上 收取維護費用 3.其餘...
""" 一個項目中最最最重要的不是業務邏輯的書寫 而是前期的表設計,只要將表設計好了,後續的功能書寫纔會一路順風 bbs表設計 1.用戶表 繼承AbstractUser 擴展 phone 電話號碼 avatar 用戶頭像 create_time 建立時間 外鍵字段 一對一我的站點表 2.我的站點表 site_name 站點名稱 site_title 站點標題 site_theme 站點樣式 3.文章標籤表 name 標籤名 外鍵字段 一對多我的站點 4.文章分類表 name 分類名 外鍵字段 一對多我的站點 5.文章表 title 文章標題 desc 文章簡介 content 文章內容 create_time 發佈時間 數據庫字段設計優化(******) (雖然下述的三個字段能夠從其餘表裏面跨表查詢計算得出,可是頻繁跨表效率) up_num 點贊數 down_num 點踩數 comment_num 評論數 外鍵字段 一對多我的站點 多對多文章標籤 一對多文章分類 6.點贊點踩表 記錄哪一個用戶給哪篇文章點了贊仍是點了踩 user ForeignKey(to="User") article ForeignKey(to="Article") is_up BooleanField() 1 1 1 1 2 1 1 3 0 2 1 1 7.文章評論表 記錄哪一個用戶給哪篇文章寫了哪些評論內容 user ForeignKey(to="User") article ForeignKey(to="Article") content CharField() comment_time DateField() # 自關聯 parent ForeignKey(to="Comment",null=True) # ORM專門提供的自關聯寫法 parent ForeignKey(to="self",null=True) id user_id article_id parent_id 1 1 1 2 2 1 1 根評論子評論的概念 根評論就是直接評論當前發佈的內容的 子評論是評論別人的評論 1.PHP是世界上最牛逼的語言 1.1 python纔是最牛逼的 1.2 java纔是 根評論與子評論是一對多的關係 """