Spring Boot 2.x 實現檔案上傳功能
阿新 • • 發佈:2021-01-08
強調
"""
其實我們在建立好一個django專案之後直接執行資料庫遷移命令會自動生成很多表
django_session
auth_user
django在啟動之後就可以直接訪問admin路由,參考auth_user表,並且還必須是管理員使用者才能進入
使用auth模組,要用就用全套,要不就不用
"""
用法
# 建立超級使用者(管理員使用者) python manage.py createsuperuser # 依賴於auth_user,完成使用者相關功能 # 必須掌握 from django.contrib import auth # 1.自動獲取表,自動給密碼加密再比對 # 該方法注意事項:括號內必須同時傳入使用者名稱和密碼 # 該方法有返回值,使用者物件;資料不符合則反會None user_obj = auth.authenticate(request,username=username,password=password) if user_obj: # 2.儲存使用者狀態 # 該方法,只要執行了該方法,你就可以在任何地方通過request.user獲取到當前登入的使用者物件;未登入拿到的是AnonymousUser,匿名使用者 auth.login(request, user_obj) # 類似於request.session[key]=user_obj # 3.判斷使用者是否登入 request.user.is_authenticated() # 4.使用者登入之後才能執行的功能 from django.contrib.auth.decorators import login_required @login_required(login_url='/login/') # 區域性配置:加引數,當用戶沒有登入的情況下,跳轉得到對應路徑下 """ 沒有登入,跳轉到指定頁面,全域性配置,settings檔案中 LOGIN_URL = '/login/' 如果區域性和全域性都有,那麼會使用區域性的 區域性和全部哪個好呢?====全域性的好處在於無需重複寫程式碼,但是跳轉的頁面很統一 區域性可以自定義跳轉頁面 """ # 5.修改密碼 is_correct = request.user.check_password(old_password) # 自動加密比對密碼 request.user.set_password(new_password) # 修改物件屬性 request.user.save() # 這一步才是真正的操作資料庫 # 6.登出使用者 auth.logout(request) # 直接去session表中將該物件刪除,類似session.flush() # 7.註冊功能 from django.contrib.auth.models import User # 建立普通使用者 User.objects.create_user(username=username,password=password) # 建立超級使用者,使用程式碼建立,郵箱必填 User.objects.create_superuser(username=username,email='',password=password)
如何擴充套件auth_user表
第一種:一對一關係 第二種:利用面向物件的繼承 class UserInfo(AbstractUser): """ 如果繼承了AbstractUser 那麼在執行資料庫遷移命令的時候auth_user表就不會在創建出來了,而UserInfo表中 會出現auth_user所有的欄位外加自己擴充套件的欄位 前提: 1.在繼承之前沒有執行過資料庫遷移命令(auth_user沒有被建立) auth_user沒有被建立,如果當前庫已經建立了那麼你就重新換一個庫 2.繼承的類裡面不要覆蓋AbstractUser裡面的欄位名 表裡面有的欄位都不要動,只擴充套件外欄位即可 3.需要在配置檔案中告訴django你要用UserInfo替代auth_user AUTH_USER_MODEL = 'app01.UserInfo' 應用名.表名 總結:如果自己寫表替代了auth_user那麼auth模組的功能還是正常使用,參考的表有原來的auth_user變成了UserInfo """