欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django中間件攔截未登錄url實例詳解

 更新時間:2019年09月03日 14:40:22   作者:凌晨4點的太陽  
在本篇文章里小編給各位整理了關(guān)于Django中間件攔截未登錄url的實例內(nèi)容以及相關(guān)知識點,有需要的朋友們可以學(xué)習(xí)下。

1.利用裝飾器在視圖中攔截未登錄的url

@login_required(login_url='/user/login/')
def homepage(request):
  pass

這種方法適合于程序中只有少數(shù)幾個需要登錄攔截的url。

2. 利用中間件技術(shù)攔截未登錄的url

2.1 在settings.py添加MIDDLEWARE設(shè)置:middleware.LoginCheckMiddleware

MIDDLEWARE = [
  'django.middleware.security.SecurityMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  # 'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  # url登錄攔截中間件
  'middleware.LoginCheckMiddleware',
]

2.2 在項目目錄下創(chuàng)建middleware.py文件,文件中創(chuàng)建攔截類:LoginCheckMiddleware

import re
from django.http import JsonResponse
from django.shortcuts import HttpResponseRedirect
from django.utils.deprecation import MiddlewareMixin

class LoginCheckMiddleware(MiddlewareMixin):
  def process_request(self, request): 
    # | 分隔要匹配的多個url,從左到右匹配,有匹配就返回匹配值,否則返回None。
    pattern = r'^(/$|/user/user/[0-9]+/$|/user/user/$|/user/getuserall|/user/get_token_code|/user/update_phone_no|/stock|/future)'

    # 如果 request.path 的開始位置能夠找到這個正則樣式的任意個匹配,就返回一個相應(yīng)的匹配對象。
    # 如果不匹配,就返回None
    match = re.search(pattern, request.path)
    # 需要攔截的url
    if match and not request.user.is_authenticated:
      print('用戶未登錄URL攔截 >>: ', request.path)
       # 主頁未登錄
      if request.path == '/':
        return HttpResponseRedirect('/user/login/')
      # ajax請求未登錄
      else:
        return JsonResponse({'status': False, 'info': '用戶未登錄!'})

應(yīng)用了正則表達式過濾需要攔截的url。

由于ajax請求不能重定向,所以對于ajax請求的url攔截返回json數(shù)據(jù),由前端處理返回的結(jié)果。

以上就是本次介紹的全部知識點內(nèi)容,感謝大家的學(xué)習(xí)和對腳本之家的支持。

相關(guān)文章

  • Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解

    Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解

    這篇文章主要介紹了Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python將unicode和str互相轉(zhuǎn)化的實現(xiàn)

    python將unicode和str互相轉(zhuǎn)化的實現(xiàn)

    這篇文章主要介紹了python將unicode和str互相轉(zhuǎn)化的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 樹莓派+攝像頭實現(xiàn)對移動物體的檢測

    樹莓派+攝像頭實現(xiàn)對移動物體的檢測

    這篇文章主要為大家詳細介紹了樹莓派+攝像頭實現(xiàn)對移動物體的檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python繪圖之柱形圖繪制詳解

    Python繪圖之柱形圖繪制詳解

    這篇文章主要介紹了Python繪圖之柱形圖繪制詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python opencv鼠標交互操作的實用指南

    python opencv鼠標交互操作的實用指南

    最近的工作經(jīng)常需要對圖像進行操作,也需要用鼠標對圖像進行各種操作,所以下面這篇文章主要給大家介紹了關(guān)于python opencv鼠標交互操作的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • python自動化測試selenium核心技術(shù)等待條件教程

    python自動化測試selenium核心技術(shù)等待條件教程

    這篇文章主要為大家介紹了python自動化測試selenium核心技術(shù)等待條件教程的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法

    python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法

    這篇文章主要為大家詳細介紹了python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python中csv文件的若干讀寫方法小結(jié)

    python中csv文件的若干讀寫方法小結(jié)

    今天小編就為大家分享一篇python中csv文件的若干讀寫方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Pycharm社區(qū)版創(chuàng)建Flask項目的實現(xiàn)步驟

    Pycharm社區(qū)版創(chuàng)建Flask項目的實現(xiàn)步驟

    本文主要介紹了Pycharm社區(qū)版創(chuàng)建Flask項目,包括設(shè)置Python環(huán)境、安裝Flask庫以及創(chuàng)建基本的項目結(jié)構(gòu),具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Python使用Selenium進行Web自動化測試

    Python使用Selenium進行Web自動化測試

    Selenium 是一個用于 Web 應(yīng)用自動化測試的強大工具,可以用來模擬用戶操作瀏覽器,從而測試 Web 應(yīng)用的功能,它支持多種瀏覽器和編程語言,包括 Python,下面我們將介紹如何使用 Selenium 進行 Web 自動化測試,需要的朋友可以參考下
    2024-08-08

最新評論