<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Django自帶Auth模塊

      Posted on 2022-11-27 21:36  呱呱呱呱嘰里呱啦  閱讀(25)  評(píng)論(0)    收藏  舉報(bào)

      Django自帶Auth模塊

      # 創(chuàng)建超級(jí)用戶
      python manage.py createsuperuser
      # 使用auth模塊,要用就全用
      
      
      from django.contrib.auth.decorators import login_required
      from django.contrib.auth.models import User
      # Create your views here.
      def login(request): #登錄
          if request.method == 'POST':
              username = request.POST.get('username')
              password = request.POST.get('password')
              user_obj = auth.authenticate(request,username=username,password=password) # 必須同時(shí)傳入用戶名和密碼,返回用戶對(duì)象或者None
              if user_obj:
                  # 保存用戶狀態(tài)
                  auth.login(request,user_obj) #類似于request.session[''] = user_obj,執(zhí)行后就可以使用request.user獲取當(dāng)前登錄的用戶對(duì)象
                  return redirect('home')
      
          return render(request,'login.html')
      
      @login_required(login_url='/login/') # 局部指定登錄頁面,優(yōu)先級(jí)高于settings.py中的全局配置
      def home(request):
          # if request.user.is_authenticated(): # 判斷是否登錄
          #     return HttpResponse('你登錄了,這里是你的主頁')
          return HttpResponse('這里是主頁')
      
      @login_required
      def modify_pwd(request): # 修改密碼
          if request.method == 'POST':
              old_password = request.POST.get('old_password')
              new_password = request.POST.get('new_password')
              confirm_password = request.POST.get('confirm_password')
              if new_password == confirm_password:
                  is_right = request.user.check_password(old_password) # 自動(dòng)加密比對(duì)數(shù)據(jù)庫
                  if is_right:
                      request.user.set_password(new_password) #修改對(duì)象屬性
                      request.user.save() # 操作數(shù)據(jù)庫
          return render(request,'modify_pwd.html',locals())
      
      @login_required
      def logout(request): # 注銷
          auth.logout(request) # 類似request.session.flush()
          return redirect('/login/')
      
      
      def register(request):
          if request.method == 'POST':
              username = request.POST.get('username')
              password = request.POST.get('password')
              # User.objects.create(username=username,password=password) # 會(huì)明文存儲(chǔ)密碼
              User.objects.create_user(username=username,password=password) # 創(chuàng)建普通
              # 創(chuàng)建超級(jí)用戶create_superuser
          return render(request,'register.html')
      

      auth模塊小結(jié)

      # 比對(duì)用戶名和密碼
      user_obj = auth.authenticate(request,username=username,password=password) # 必須同時(shí)傳入用戶名和密碼,返回用戶對(duì)象或者None
      
      # 保存用戶狀態(tài)
      auth.login(request,user_obj) #類似于request.session[''] = user_obj,執(zhí)行后就可以使用request.user獲取當(dāng)前登錄的用戶對(duì)象
      
      # 判斷當(dāng)前用戶是否登錄
      request.user.is_authenticated() # 判斷是否登錄
      
      # 獲取當(dāng)前登錄用戶
      request.user
      
      # 校驗(yàn)用戶是否登錄裝飾器
      from django.contrib.auth.decorators import login_required
      @login_required(login_url='/login/') # 局部指定登錄頁面,優(yōu)先級(jí)高于settings.py中的全局配置
      # settings.py LOGIN_URL = '/login/' 全局配置
      
      # 修改密碼
      is_right = request.user.check_password(old_password) # 自動(dòng)加密比對(duì)數(shù)據(jù)庫
      request.user.set_password(new_password) #修改對(duì)象屬性
      request.user.save() # 操作數(shù)據(jù)庫
      
      # 注銷
      auth.logout(request)
      
      # 注冊(cè)
      from django.contrib.auth.models import User
      User.objects.create_user(username=username,password=password) # 創(chuàng)建普通用戶
      

      拓展auth_user表

      class UserInfo(AbstractUser):
          '''
          如果繼承了AbstractUser,在執(zhí)行數(shù)據(jù)庫遷移命令時(shí)就不會(huì)創(chuàng)建auth_user表,而會(huì)在userinfo表中包含所有auth_user表
          的字段,并包含自己拓展的字段
          但是:
          1。需要在數(shù)據(jù)庫設(shè)計(jì)階段就明確不適用auth_user表,如果當(dāng)前庫已經(jīng)創(chuàng)建了auth_user表,則該庫不可執(zhí)行以上繼承
          2.繼承的類不要覆蓋Abstract類中的字段名
          3.需要在配置文件中聲明用userinfo替換auth_user
          AUTH__USER_MODEL = 'app01.UserInfo' 應(yīng)用名.類名
      
          '''
          phone = models.CharField(max_length=16)
      

      User類表如果要后期拓展字段

      1.刪除所有app下的遷移文件

      2.刪除admin & auth下的遷移文件

      3.數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)為外部文件

      4.刪庫

      5.數(shù)據(jù)庫導(dǎo)入

      主站蜘蛛池模板: 免费吃奶摸下激烈视频| 新版天堂资源中文8在线| 亚洲天堂成年人在线视频| 公主岭市| 人妻系列无码专区免费| 时尚| 久久精品国产精品亚洲毛片| 欧美色丁香| 波多野结衣久久一区二区| 久久综合给合久久狠狠97色| 久久成人国产精品免费软件| 熟女人妻aⅴ一区二区三区电影| 人妻少妇中文字幕久久| 性一交一乱一伦| 亚洲国产高清av网站| 国产愉拍精品手机| 亚洲精品男男一区二区| 在线观看国产成人AV天堂| 国产熟女一区二区三区四区| 日本一区二区三区内射| 亚洲精品电影院| 狠狠久久五月综合色和啪| 国产玖玖视频| 亚洲午夜理论无码电影| 国产午夜鲁丝片av无码| 亚洲色成人一区二区三区 | 中文字幕精品无码一区二区| 亚洲成人www| 亚洲av无码乱码在线观看野外| 精品久久久久久无码不卡| 香蕉EEWW99国产精选免费| 亚洲日韩av无码| 国产精品美女一区二三区| 亚洲午夜伦费影视在线观看| 亚洲中文字幕无码专区| 伊人色综合一区二区三区| 超碰伊人久久大香线蕉综合| 成在线人免费视频| 亚洲国产精品日韩在线 | 在线观看潮喷失禁大喷水无码| 内射中出无码护士在线|