婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Django中session進行權限管理的使用

Django中session進行權限管理的使用

熱門標簽:如何地圖標注公司 預覽式外呼系統 上海正規的外呼系統最新報價 煙臺電話外呼營銷系統 長春極信防封電銷卡批發 企業彩鈴地圖標注 外賣地址有什么地圖標注 電銷機器人錄音要學習什么 銀川電話機器人電話

當session啟用后,傳遞給視圖request參數的HttpRequest對象將包含一個session屬性,就像一個字典對象一樣。你可以在Django的任何地方讀寫request.session屬性,或者多次編輯使用它。

這個文件在我的C:\Users\17764530215\test\mysite地址

1.urls.py

from django.contrib import admin
from django.urls import path
from login import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('login/', views.login),
    path('register/', views.register),
    path('logout/', views.logout),
]

策略:

  • 未登錄人員,不論是訪問index還是login和logout,全部跳轉到login界面
  • 已登錄人員,訪問login會自動跳轉到index頁面
  • 已登錄人員,不允許直接訪問register頁面,需先logout
  • 登出后,自動跳轉到login界面

(wow,這其實就是我們的功能!!)

2.login/models.py

from django.db import models

# Create your models here.


class User(models.Model):

    gender = (
        ('male', "男"),
        ('female', "女"),
    )

    name = models.CharField(max_length=128, unique=True)
    password = models.CharField(max_length=256)
    email = models.EmailField(unique=True)
    sex = models.CharField(max_length=32, choices=gender, default="男")
    c_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ["-c_time"]
        verbose_name = "用戶"
        verbose_name_plural = "用戶"

各字段含義:

name: 必填,最長不超過128個字符,并且唯一,也就是不能有相同姓名; password: 必填,最長不超過256個字符(實際可能不需要這么長); email: 使用Django內置的郵箱類型,并且唯一; sex: 性別,使用了一個choice,只能選擇男或者女,默認為男; 使用__str__方法幫助人性化顯示對象信息; 元數據里定義用戶按創建時間的反序排列,也就是最近的最先顯示;

3.views.login和login.html

views.login:

def login(request):
    if request.session.get('is_login', None):  # 不允許重復登錄
        return redirect('/index/')
    if request.method == 'POST':
        login_form = forms.UserForm(request.POST)   #上一次填寫了這個表單,所以從這里得到這個表單的數據
        message = '請檢查填寫的內容!'
        if login_form.is_valid():
            username = login_form.cleaned_data.get('username')
            password = login_form.cleaned_data.get('password')

            try:
                user = models.User.objects.get(name=username)
            except :
                message = '用戶不存在!'
                return render(request, 'login/login.html', locals())

            if user.password == password:   #如果用戶名和密碼都成功
                # 往session字典內寫入用戶狀態和數據:
                request.session['is_login'] = True  #is_login=True表示成功登陸
                request.session['user_id'] = user.id
                request.session['user_name'] = user.name
                return redirect('/index/')  #重定向到主頁
            else:
                message = '密碼不正確!'
                return render(request, 'login/login.html', locals())
        else:
            return render(request, 'login/login.html', locals())

    # 不是POST的話,統統轉去login.html
    login_form = forms.UserForm()
    return render(request, 'login/login.html', locals())

我們進入login時,會去session里面找is_login項,如果為true就表示已經登陸了,所以就重定向到/index/中,進入首頁.

如果為False,即沒有登陸,那么往下走。如果是POST方法,那么執行一系列操作,如果不是POST,就表示是第一次用GET的方式登陸到這個login網頁的,那么就用forms.UserForm產生一個對象login_form,將其作為參數傳到login/login.html模板文件中,待會再介紹這個文件。

如果為False,且是POST時,就表明是填寫了表單的,這里就涉及很多業務邏輯和session的管理了,重點講。如果login_form.is_valid() 如下:通過login_form = forms.UserForm(request.POST)得到填寫的這個表單數據,然后去和數據庫的用戶名密碼去驗證,如果通過了,那么就將request.session['is_login']改為True,表示在登陸狀態,并且把user_id和user_name字段也改成對應的數據,這個之后應該有用.

下面進入login/login.html

!doctype html>
html lang="en">
  head>
    !-- Required meta tags -->
    meta charset="utf-8">
    meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    !-- 上述meta標簽*必須*放在最前面,任何其他內容都*必須*跟隨其后! -->
    !-- Bootstrap CSS -->
    link  rel="stylesheet">
    title>登錄/title>
  /head>
  body>
    div class="container">
            div class="col">
                form class="form-login" action="/login/" method="post">
                  {% if message %}
                    div class="alert alert-warning">{{ message }}/div>
                  {% endif %}
                  {% csrf_token %}
                  h3 class="text-center">歡迎登錄/h3>

                  {{ login_form }}

                  div>
                      a href="/register/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="text-success " >ins>新用戶注冊/ins>/a>
                      button type="submit" class="btn btn-primary float-right">登錄/button>
                  /div>
                /form>
            /div>
    /div> !-- /container -->

    !-- Optional JavaScript -->
    !-- jQuery first, then Popper.js, then Bootstrap JS -->
    {#    以下三者的引用順序是固定的#}
    script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js">/script>
    script src="https://cdn.bootcss.com/popper.js/1.15.0/umd/popper.js">/script>
    script src="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js">/script>

  /body>
/html>

這里重要的地方是這個語句——{{ login_form }},在這個位置插入了一個表單login_form,然后填寫好這個表單以后,用view里面的login函數通過執行login_form = forms.UserForm(request.POST)來獲取填寫的這個表單數據,然后去進行校驗等等操作...

有了這兩個,我們的權限管理就基本完成了!本質上,這倆東西提供了一種機制————可以對輸入的用戶數據存在session里,然后校驗的時候從session中取出,去判斷是否是合法的用戶。那么,我們只需要再修改一下index.html,也是用session去校驗,這樣,直接通過網址訪問的用戶,由于沒有session,就會被攔截!

4.views.index

def index(request):
    if not request.session.get('is_login', None):   #如果不在登陸狀態,就重定向到login
        return redirect('/login/')
    return render(request, 'login/index.html')  #如果在登陸狀態,就進入index.html的模板文件

這里邏輯很清楚:如果不在登陸狀態,就重定向到login;如果在登陸狀態,就直接重定向到真正的login/index.html模板。在這么模板中,我們就可以開發各種功能了,該demo中的login/index/html如下:

!DOCTYPE html>
    !-- Optional JavaScript -->
    !-- jQuery first, then Popper.js, then Bootstrap JS -->
    {#    以下三者的引用順序是固定的#}
    script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js">/script>
    script src="https://cdn.bootcss.com/popper.js/1.15.0/umd/popper.js">/script>
    script src="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js">/script>
​
  /body>
/html>

這里重要的地方是這個語句——{{ login_form }},在這個位置插入了一個表單login_form,然后填寫好這個表單以后,用view里面的login函數通過執行login_form = forms.UserForm(request.POST)來獲取填寫的這個表單數據,然后去進行校驗等等操作...​有了這兩個,我們的權限管理就基本完成了!本質上,這倆東西提供了一種機制————可以對輸入的用戶數據存在session里,然后校驗的時候從session中取出,去判斷是否是合法的用戶。那么,我們只需要再修改一下index.html,也是用session去校驗,這樣,直接通過網址訪問的用戶,由于沒有session,就會被攔截!​

4.views.index

def index(request):
    if not request.session.get('is_login', None):   #如果不在登陸狀態,就重定向到login
        return redirect('/login/')
    return render(request, 'login/index.html')  #如果在登陸狀態,就進入index.html的模板文件

這里邏輯很清楚:如果不在登陸狀態,就重定向到login;如果在登陸狀態,就直接重定向到真正的login/index.html模板。在這么模板中,我們就可以開發各種功能了,該demo中的login/index/html如下:

html lang="en">
head>
    meta charset="UTF-8">
    title>首頁/title>
/head>
body>
h1>{{ request.session.user_name }}!  歡迎回來!/h1>
p>
    a href="/logout/">登出/a>
/p>
/body>
/html>

最后,再來看看logout的實現吧

5.views.logout

def logout(request):    #登出
    if not request.session.get('is_login', None):   #如果不在登陸狀態,就直接轉發到登陸界面
        # 如果本來就未登錄,也就沒有登出一說
        return redirect("/login/")

    request.session.flush() #清空session
    # 或者使用下面的方法
    # del request.session['is_login']
    # del request.session['user_id']
    # del request.session['user_name']
    return redirect("/login/")  #重定向到login界面

如果未登陸,那么直接重定向/login/界面,如果是登陸狀態,那么需要先通過 request.session.flush()來清空session,然后再重定向到/login/的登陸界面.

6.總結session和forms的搭配

forms其實是在html中,通過將表單和對象聯系在一起,就可以很容易在填寫表單后,通過forms去找到填寫的內容。
session其實是權限校驗的利器!沒有session的時候,用戶可以直接訪問index界面,有session的時候,index函數的處理邏輯就變成通過session去判斷是否登陸。當然,與之配套,還必須要用login,logout等函數來維護好這個session信息,保證一個不變性——所有session中的is_login字段為True的時候,都是真正的登陸用戶.

到此這篇關于Django中session進行權限管理的使用的文章就介紹到這了,更多相關Django session權限管理內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django 權限管理(permissions)與用戶組(group)詳解
  • django自帶的權限管理Permission用法說明
  • Django 自定義權限管理系統詳解(通過中間件認證)
  • django認證系統實現自定義權限管理的方法
  • Django RBAC權限管理設計過程詳解
  • Django-Rest-Framework 權限管理源碼淺析(小結)
  • django認證系統實現自定義權限管理的方法

標簽:盤錦 潮州 宜昌 湖北 西寧 佳木斯 上饒 珠海

巨人網絡通訊聲明:本文標題《Django中session進行權限管理的使用》,本文關鍵詞  Django,中,session,進行,權限,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Django中session進行權限管理的使用》相關的同類信息!
  • 本頁收集關于Django中session進行權限管理的使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区三区加勒比av| 日韩高清国产一区在线| 中文字幕一区二区三| 图片区小说区区亚洲影院| 日本欧美肥老太交大片| 在线免费观看日韩欧美| 久久影音资源网| 国产成人av网站| 国产精品不卡视频| 欧美亚洲另类激情小说| 天天色综合成人网| 欧美天堂一区二区三区| 亚洲午夜免费视频| 欧美一区二区三区小说| 亚洲五月六月丁香激情| 欧美高清视频一二三区| 日本不卡免费在线视频| 国产精品久线观看视频| 91猫先生在线| 亚洲成a人片综合在线| 日韩欧美久久一区| 日韩欧美国产三级电影视频| 91麻豆精品国产综合久久久久久| 91麻豆精品国产91久久久久 | 亚洲激情图片一区| 亚洲最大成人网4388xx| 亚洲va在线va天堂| 色琪琪一区二区三区亚洲区| 国产精品久久夜| 一区二区三区欧美激情| 五月激情综合色| 精品在线观看视频| 26uuu国产一区二区三区| 亚洲一区二区三区四区在线观看| 偷拍与自拍一区| 欧美一级日韩一级| 日本一道高清亚洲日美韩| aa级大片欧美| 777a∨成人精品桃花网| 中文字幕一区免费在线观看 | 夜夜精品浪潮av一区二区三区| 久久精品免费观看| 久久看人人爽人人| 激情深爱一区二区| 911精品国产一区二区在线| 麻豆精品新av中文字幕| 久久精品亚洲一区二区三区浴池| 亚洲精品国产无天堂网2021| 91麻豆国产香蕉久久精品| 亚洲伦理在线精品| 国产一区啦啦啦在线观看| 日韩欧美成人午夜| 日本不卡不码高清免费观看| 在线看一区二区| 国产精品进线69影院| 日本高清不卡aⅴ免费网站| 久久99最新地址| 国产日韩欧美麻豆| 成人免费视频caoporn| 日韩中文字幕一区二区三区| 精品久久久影院| 成人a免费在线看| 亚洲成av人片一区二区| 国产精品亲子伦对白| 97超碰欧美中文字幕| 亚洲三级在线观看| 久久综合九色综合97婷婷| 欧美性一二三区| 国产伦精品一区二区三区免费 | 日本午夜一本久久久综合| 日韩一卡二卡三卡| 久久99久国产精品黄毛片色诱| 精品国免费一区二区三区| 高清在线不卡av| 最新中文字幕一区二区三区| 欧美三电影在线| 欧美性感一区二区三区| 亚洲综合av网| 777a∨成人精品桃花网| 99久精品国产| 国产成人av电影在线| 国产精品不卡视频| 国产欧美日韩视频在线观看| 69堂精品视频| 91成人免费在线视频| 国产在线视视频有精品| 九色综合国产一区二区三区| 日韩电影在线免费看| 亚洲bdsm女犯bdsm网站| 日韩精品成人一区二区在线| 亚洲欧洲精品一区二区三区不卡| 久久女同性恋中文字幕| 欧美日韩国产高清一区二区| 不卡欧美aaaaa| 成人av第一页| 不卡欧美aaaaa| 国产成人精品在线看| 国产成人丝袜美腿| 91麻豆高清视频| 99久久精品一区二区| 欧美日韩国产美| 91传媒视频在线播放| 一区二区三区 在线观看视频 | 久久精品在这里| 精品国产青草久久久久福利| 洋洋av久久久久久久一区| 国产在线国偷精品免费看| 国产露脸91国语对白| 亚洲二区在线观看| 免费在线看成人av| 国产99一区视频免费| 精品国产欧美一区二区| 久久伊人中文字幕| 国产精品美女久久久久aⅴ | 欧美一区二区三区喷汁尤物| 26uuu亚洲综合色欧美| 色香蕉成人二区免费| 欧美精品在线观看播放| 日韩一级高清毛片| 欧美在线免费观看亚洲| 欧美色视频在线| 中文天堂在线一区| 国产综合色视频| eeuss鲁片一区二区三区 | 欧美成人bangbros| 午夜精品久久一牛影视| 黄色日韩网站视频| 色久优优欧美色久优优| 国产精品无人区| 一区二区三区中文字幕精品精品 | 国产一级精品在线| 99久久久国产精品免费蜜臀| 日韩一二三区视频| 一区二区三区免费网站| 欧美性色黄大片手机版| 日韩一级免费观看| 亚洲一二三四在线| 91亚洲永久精品| 久久无码av三级| 免费在线欧美视频| 欧美乱妇23p| 亚洲成a人v欧美综合天堂| 欧美性猛片aaaaaaa做受| 亚洲精品一区二区精华| 日本不卡在线视频| 成人国产免费视频| 国产免费久久精品| 粉嫩蜜臀av国产精品网站| 国产精品理论片在线观看| 成人av在线一区二区三区| 国产91精品久久久久久久网曝门| 狠狠色狠狠色综合日日91app| 欧美丰满美乳xxx高潮www| 欧美理论在线播放| 国产最新精品精品你懂的| 丝袜美腿成人在线| 亚洲国产日产av| 日本vs亚洲vs韩国一区三区| 91麻豆精品国产自产在线| 午夜在线电影亚洲一区| 久久久影院官网| 99re视频精品| 日韩 欧美一区二区三区| 久久久久久久综合狠狠综合| 国产成人av电影在线观看| 精品国产乱码久久久久久1区2区| 国内精品久久久久影院一蜜桃| 欧美一级一级性生活免费录像| 午夜视频在线观看一区| 日本一区二区三区dvd视频在线| 91丨九色丨国产丨porny| 久久99热国产| 国产精品久久毛片a| 5月丁香婷婷综合| 国内久久精品视频| 国产一区二区毛片| 国产成人在线色| av成人老司机| 7777精品伊人久久久大香线蕉超级流畅 | 99视频在线观看一区三区| 欧美日韩亚洲丝袜制服| 正在播放一区二区| 亚洲国产精品v| 亚洲人成人一区二区在线观看 | 亚洲婷婷国产精品电影人久久| 国产午夜精品在线观看| 午夜精品在线视频一区| 加勒比av一区二区| 国产成都精品91一区二区三| 91精品国产全国免费观看| 精品国产免费人成在线观看| 中文字幕av一区 二区| 国产老女人精品毛片久久| 91小视频在线免费看| 日韩久久久精品| 亚洲欧美日本韩国| 麻豆成人久久精品二区三区红| 在线观看一区二区精品视频| 亚洲日本免费电影| 亚洲chinese男男1069|