摘要:中間件的分類請求期間返回期間如果需要自定義,在中添加對應(yīng)路徑的文件即可自定義方法需求場景在平時(shí)開發(fā)調(diào)試中,會遇到這樣那樣的報(bào)錯(cuò),我們自定義一個(gè)簡單的中間件,的自定義步驟很簡單,實(shí)現(xiàn)方法即可根據(jù)的和信息,調(diào)用的接口,當(dāng)報(bào)錯(cuò)時(shí)自動(dòng)搜索相關(guān)的答案
Django中間件MIDDLEWARE的分類:
請求期間:
process_request(request) process_view(request, view_func, view_args, view_kwargs)
返回期間:
process_exception(request, exception) (only if the view raised an exception) process_template_response(request, response) (only for template responses) process_response(request, response)
如果需要自定義,在MIDDLEWARE_CLASSES中添加對應(yīng)路徑的文件即可
MIDDLEWARE_CLASSES = ( "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.auth.middleware.SessionAuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", "django.middleware.security.SecurityMiddleware", // 自定義Middleware方法 "app_name.middleware.StackOverflowMiddleware", )
需求場景
在平時(shí)django開發(fā)調(diào)試中,會遇到這樣那樣的exception報(bào)錯(cuò),我們自定義一個(gè)簡單的中間件,django的自定義步驟很簡單,實(shí)現(xiàn)process_exception方法即可
根據(jù)exception的name和信息,調(diào)用stackoveflow的接口,當(dāng)debug報(bào)錯(cuò)時(shí)自動(dòng)搜索相關(guān)的答案,節(jié)省一些時(shí)間,實(shí)現(xiàn)起來很簡單
備注:僅為介紹思路,線上代碼不要這么使用
代碼實(shí)現(xiàn)
app目錄下 middleware.py文件
import requests from django.conf import settings class StackOverflowMiddleware(object): def process_exception(self, request, exception): if settings.DEBUG: intitle = u"{}: {}".format(exception.__class__.__name__, exception.message) url = "https://api.stackexchange.com/2.2/search" params = { "order": "desc", "sort": "votes", "site": "stackoverflow", "pagesize": 3, "tagged": "python;django", "intitle": intitle } r = requests.get(url, params=params) questions = r.json() if len(questions["items"]) > 0: print " The stackoverflow answer top 3 is : " for question in questions["items"][:3]: print " " print question["title"] print question["link"] + " " else : print " stackoverflow answer not found " return None
效果如下:
Django版本:1.9.4
python版本:2.7.6
調(diào)試時(shí),settings.DEBUG處于開啟模式
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44790.html
摘要:前言項(xiàng)目中開發(fā)的幾個(gè)服務(wù)一直使用作為服務(wù)器,本人也曾提出過疑問,為什么是,得到的答案是比較,,,的并發(fā)性能最好,而且最為輕量級。的賣點(diǎn)是超高的開發(fā)效率,其性能擴(kuò)展有限的性能表現(xiàn)前兩天有寫一篇的帖子傳送門使用對鑒權(quán)接口加壓,看的性能表現(xiàn)。 前言 項(xiàng)目中開發(fā)的幾個(gè)服務(wù)一直使用tornado作為http服務(wù)器,本人也曾提出過疑問,為什么是tornado,得到的答案是比較tornado,fla...
摘要:利用開發(fā)個(gè)小型商城我們本期的教程是教大家如何利用開發(fā)一個(gè)小型的商城這里所說的小型商城只是功能上的簡樸。并于年月在許可證下發(fā)布。這套框架是以比利時(shí)的吉普賽爵士吉他手來命名的。是重量級選手中最有代表性的一位。 利用Django開發(fā)個(gè)小型商城 我們本期的教程是教大家如何利用Django開發(fā)一個(gè)小型的商城,這里所說的小型商城只是功能上的簡樸。 作者:黃志成(小黃) 作者博客:博客地址 前提 1...
摘要:中自定義了一些,用于監(jiān)聽一些操作,并發(fā)出通知官方解釋提供一個(gè)信號分發(fā)器,允許解耦的應(yīng)用在框架的其它地方發(fā)生操作時(shí)會被通知到。簡單來說,信號允許特定的通知一組某些操作已經(jīng)發(fā)生。或者在請求時(shí),記錄請求信息。 django中自定義了一些singals,用于監(jiān)聽一些操作,并發(fā)出通知 官方解釋: Django 提供一個(gè)信號分發(fā)器,允許解耦的應(yīng)用在框架的其它地方發(fā)生操作時(shí)會被通知到。 ...
摘要:在沒有添加解決在中添加數(shù)據(jù)庫配置參數(shù)出錯(cuò)解決查看中參數(shù)是否配置出錯(cuò),比如數(shù)據(jù)庫指定,數(shù)據(jù)庫權(quán)限,密碼之類因?yàn)樵谥凶远x了命令,報(bào)命令重復(fù)解決刪掉自定制的,簡單的也可以在中,注釋掉模塊 1.在settings沒有添加AUTH_USER_MODEL auth.User.groups: (fields.E304) Reverse accessor for User.groups clashe...
閱讀 3564·2023-04-25 19:56
閱讀 1673·2021-11-12 10:36
閱讀 1790·2021-11-08 13:19
閱讀 1550·2019-08-30 14:06
閱讀 3041·2019-08-30 11:01
閱讀 1736·2019-08-29 13:23
閱讀 2744·2019-08-29 11:18
閱讀 3430·2019-08-26 13:35