django中間件,中間件給下面傳值

1、新建middleware.py文件

# myapp/middleware.py
import time
from django.http import HttpRequest
import json
from django.http import JsonResponse
import urllib.parse
class RequestTimeMiddleware:def __init__(self, get_response):self.get_response = get_responsedef __call__(self, request: HttpRequest):# 記錄請求開始時間start_time = time.time()# 調用下一個中間件或視圖response = self.get_response(request)# 計算請求處理時間process_time = time.time() - start_time# 打印處理時間print(f"訪問地址:{request.path},時間:{process_time:.4f}")json_data = json.loads(request.body.decode('utf-8'))# 獲取請求頭中的 User 和 Token,請求中中文亂碼,使用urllib轉碼user = urllib.parse.unquote(request.META.get('HTTP_USER'))token = urllib.parse.unquote(request.META.get('HTTP_TOKEN'))if request.path == "/app/login":return responseelse:data = {"code": "20001","data": json_data,"message": "不合法"}return JsonResponse(data)

在這里插入圖片描述
2、注冊中間件settings.py

'middleware.middleware.RequestTimeMiddleware', #中間件

在這里插入圖片描述

在這里插入圖片描述
3、中間件給下面傳值

 # 給 request 對象添加自定義屬性,給路由加值,下面方法使用type = request.user_type獲得
request.user_type = list[0]['type']
response = self.get_response(request)

完整代碼

# myapp/middleware.py
import time
from django.http import HttpRequest
import json
from django.http import JsonResponse
import urllib.parse
from django.core.cache import cache
from comm.Db import Db
class RequestTimeMiddleware:def __init__(self, get_response):self.get_response = get_responsedef __call__(self, request: HttpRequest):# 記錄請求開始時間# start_time = time.time()# 調用下一個中間件或視圖response = self.get_response(request)# 計算請求處理時間# process_time = time.time() - start_time# 打印處理時間# print(f"訪問地址:{request.path},時間:{process_time:.4f}")# 獲取請求頭中的 User 和 Token,請求中中文亂碼,使用urllib轉碼user = urllib.parse.unquote(request.META.get('HTTP_USER'))token = urllib.parse.unquote(request.META.get('HTTP_TOKEN'))if request.path == "/app/login":return responseelse:# 判斷redis的token,和請求頭的token是否相等,相等放行value = cache.get(f"{user}")if value == token:db = Db()list = db.query(f"select * from wb_admin where user='{user}'")if len(list) < 1:data = {"code": "2006","data": [],"message": "賬號不存在"}return JsonResponse(data)# 給 request 對象添加自定義屬性,給路由加值,下面方法使用type = request.user_type獲得request.user_type = list[0]['type']response = self.get_response(request)return response# 獲得post請求參數json_data = json.loads(request.body.decode('utf-8'))data = {"code": "2001","data": json_data,"message": "沒有權限訪問"}return JsonResponse(data)
# 代理管理
# 必備引入
import json
from django.views.decorators.http import require_POST, require_http_methods
from django.http import JsonResponse
# 其它引入# 查詢接口
@require_http_methods(["POST"])
def select(request):json_data = json.loads(request.body.decode('utf-8'))type = request.user_typeprint(type)data = {"code": "2000","data": json_data,"message": "登錄成功"}return JsonResponse(data)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895282.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895282.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895282.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vision Transformer:打破CNN壟斷,全局注意力機制重塑計算機視覺范式

目錄 引言 一、ViT模型的起源和歷史 二、什么是ViT&#xff1f; 圖像處理流程 圖像切分 展平與線性映射 位置編碼 Transformer編碼器 分類頭&#xff08;Classification Head&#xff09; 自注意力機制 注意力圖 三、Coovally AI模型訓練與應用平臺 四、ViT與圖像…

深入淺出:探索 DeepSeek 的強大功能與應用

深入淺出&#xff1a;探索 DeepSeek 的強大功能與應用 在人工智能技術飛速發展的今天&#xff0c;自然語言處理&#xff08;NLP&#xff09;作為其重要分支&#xff0c;正逐漸滲透到我們生活的方方面面。DeepSeek 作為一款功能強大的 NLP 工具&#xff0c;憑借其易用性和高效性…

為AI聊天工具添加一個知識系統 之97 詳細設計之38 Token 之3 前端開發

本文要點 要點 本項目&#xff08;為使用各種聊天工具的聊天者 加掛一個知識系統&#xff09;前端 的用戶界面上 主要 有 知識圖譜、認知地圖和語義網絡&#xff0c;和 聊天工具的chat嵌入 同時還必須有知識樹 成熟的果實&#xff08;對外的網頁 ) 以及 組建和參與利益相關組…

輪子項目--消息隊列的實現(3)

上一篇文章中我把一些關鍵的類以及表示出來&#xff0c;如何對這些類對應的對象進行管理呢&#xff1f;管理分為硬盤和內存上&#xff0c;硬盤又分為數據庫&#xff08;管理交換機&#xff0c;隊列和綁定&#xff09;和文件&#xff08;管理消息&#xff09;&#xff0c;本文就…

Svelte前端框架

Svelte 簡介 Svelte 是一個現代的前端框架&#xff0c;用于構建高效、響應式的用戶界面。與 React、Vue 和 Angular 等傳統框架不同&#xff0c;Svelte 在構建時將組件編譯為高效的純 JavaScript 代碼&#xff0c;而不是在瀏覽器中運行一個龐大的運行時庫。這使得 Svelte 應用具…

【轉載】開源鴻蒙OpenHarmony社區運營報告(2025年1月)

●截至2025年1月31日&#xff0c;開放原子開源鴻蒙&#xff08;OpenAtom OpenHarmony&#xff0c;簡稱“開源鴻蒙”或“OpenHarmony”&#xff09;社區累計超過8200名貢獻者&#xff0c;共63家成員單位&#xff0c;產生51.2萬多個PR、2.9萬多個Star、10.5萬多個Fork、68個SIG。…

@SneakyThrows:是Java異常處理的“魔法外掛“,還是隱藏的“定時炸彈“?

引言&#xff1a;當Java的異常機制成為"甜蜜的負擔" Java的檢查型異常&#xff08;Checked Exception&#xff09;設計本意是提升代碼健壯性&#xff0c;但開發者常常陷入兩難&#xff1a; 要么用try-catch層層包裹代碼導致"金字塔噩夢"&#xff0c;要么在…

雙周報Vol.65:新增is表達式、字符串構造和數組模式匹配增強、IDE模式匹配補全增強...多項技術更新!

MoonBit更新 新增 is 表達式 這個表達式的語法形式為 expr is pat&#xff0c;這個表達式為 Bool 類型&#xff0c;當 expr 符合 pat 這個模式的時候返回 true&#xff0c;比如&#xff1a; fn use_is_expr(x: Int?) -> Unit {if x is Some(i) && i > 10 { .…

Git 與持續集成 / 持續部署(CI/CD)的集成

一、引言 在當今快速發展的軟件開發領域&#xff0c;高效的代碼管理和持續的交付流程是項目成功的關鍵因素。Git 作為一款分布式版本控制系統&#xff0c;已經成為了開發者們管理代碼的標配工具&#xff1b;而持續集成 / 持續部署&#xff08;CI/CD&#xff09;則是一種能夠加…

百問網imx6ullpro調試記錄(linux+qt)

調試記錄 文章目錄 調試記錄進展1.開發板相關1.1百問網烏班圖密碼 1.2 換設備開發環境搭建串口調試網絡互通nfs文件系統掛載 1.3網絡問題1.4系統啟動1.5進程操作 2.QT2.1tslib1.獲取源碼2.安裝依賴文件3.編譯 2.2qt移植1.獲取qt源碼2.配置編譯器3.編譯 2.3拷貝到開發板1.拷貝2.…

開發中用到的設計模式

目錄 開發中用到的設計模式 工廠模式 設計理念 好處 體現的編程思想 適配器模式 概念 策略模式和適配器模式的區別 選擇策略模式而非適配器模式的原因 設計模式的開發原則 開發中用到的設計模式 在開發過程中&#xff0c;常見的設計模式會根據不同的業務場景和需求被…

1064 - You have an error in your SQL syntax;

在創建數據庫表建立外鍵是遇到了如下報錯 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near position(position_id) ) at line 8 數據庫表sql如下&#xff1a; --職位表 CR…

無人機 ,遙控器與接收機之前的通信

目錄 1、信號類型 2、工作頻率 3、通信協議 3.1、PPM 協議 3.2、SBUS 協議 3.3、CRSF 協議 無人機的遙控器和接收機之間常用的信號、頻率、協議等相關信息如下&#xff1a; 1、信號類型 模擬信號 特點&#xff1a;信號的幅度、頻率或相位等參數是連續變化的&#xff0c…

【c++】四種類型轉換形式

【c】四種類型轉換形式 編譯時: static_cast&#xff08;靜態轉換&#xff09; const_cast&#xff08;去常性轉換&#xff09; reinterpret_cast&#xff08;重新解釋轉換&#xff0c;直接轉換地址&#xff09; 運行時: dynamic_cast&#xff08;動態轉換&#xff0c;運行時類…

Cisco ASR1002查看資源占用的幾條命令

查看平臺資源 show platform resource 該命令用于顯示整個平臺的資源使用情況&#xff0c;包括 CPU、內存等 example: ASR1002# show platform resources **State Acronym: H - Healthy, W - Warning, C - Critical Resource…

Day 1:認知革命與DeepSeek生態定位

目標&#xff1a;建立對大模型技術范式的系統性認知&#xff0c;掌握DeepSeek的核心技術特性與生態價值 一、大模型技術演進&#xff1a;從GPT到DeepSeek 1.1 技術發展里程碑 2017-Transformer突破&#xff1a;Self-Attention機制如何突破RNN的序列建模瓶頸 2018-GPT初代&…

Python自動化辦公之Excel拆分

在日常辦公中&#xff0c;我們經常需要將包含多個Sheet頁的Excel文件拆分成多個獨立的Excel文件。例如&#xff0c;在發送Excel表給各部門確認時&#xff0c;出于控制知悉范圍最小等保密性考慮&#xff0c;每個部門只需要查看和確認自己部門對應的Sheet頁。手動拆分Excel文件非…

【CXX-Qt】1.1 Rust中的QObjects

本文涉及到了使用CXX-Qt將Rust、C和QML集成到Qt應用程序中的各個方面。下面&#xff0c;我將提供一個簡單的示例&#xff0c;演示如何使用CXX-Qt來創建一個Rust結構體并將其作為QObject子類暴露給C和QML。 一、設置CXX-Qt環境 首先&#xff0c;確保您已經安裝了Rust、CXX和CX…

Conda命令整理

Conda 是一個功能強大的包和環境管理工具&#xff0c;廣泛用于 Python 開發中。除了基本的包和環境管理功能外&#xff0c;Conda 還提供了許多高級用法和技巧&#xff0c;幫助用戶更高效地管理和維護 Python 環境。 1. 管理 Conda 本身 命令描述示例conda --version查看 Cond…

C++模擬實現AVL樹

目錄 1.文章概括 2.AVL樹概念 3.AVL樹的性質 4.AVL樹的插入 5.旋轉控制 1.左單旋 2. 右單旋 3.左右雙旋 4.右左雙旋 6.全部代碼 1.文章概括 本文適合理解平衡二叉樹的讀者閱讀&#xff0c;因為AVL樹是平衡二叉樹的一種優化&#xff0c;其大部分實現邏輯與平衡二叉樹是…