成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Django中自定義中間件模塊--自動搜索stackoveflow答案

wizChen / 2650人閱讀

摘要:中間件的分類請求期間返回期間如果需要自定義,在中添加對應(yīng)路徑的文件即可自定義方法需求場景在平時開發(fā)調(diào)試中,會遇到這樣那樣的報錯,我們自定義一個簡單的中間件,的自定義步驟很簡單,實現(xiàn)方法即可根據(jù)的和信息,調(diào)用的接口,當(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",
)

需求場景

在平時django開發(fā)調(diào)試中,會遇到這樣那樣的exception報錯,我們自定義一個簡單的中間件,django的自定義步驟很簡單,實現(xiàn)process_exception方法即可

根據(jù)exception的name和信息,調(diào)用stackoveflow的接口,當(dāng)debug報錯時自動搜索相關(guān)的答案,節(jié)省一些時間,實現(xiàn)起來很簡單

備注:僅為介紹思路,線上代碼不要這么使用

代碼實現(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)試時,settings.DEBUG處于開啟模式

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44790.html

相關(guān)文章

  • Tornado vs Django選型分析

    摘要:前言項目中開發(fā)的幾個服務(wù)一直使用作為服務(wù)器,本人也曾提出過疑問,為什么是,得到的答案是比較,,,的并發(fā)性能最好,而且最為輕量級。的賣點是超高的開發(fā)效率,其性能擴展有限的性能表現(xiàn)前兩天有寫一篇的帖子傳送門使用對鑒權(quán)接口加壓,看的性能表現(xiàn)。 前言 項目中開發(fā)的幾個服務(wù)一直使用tornado作為http服務(wù)器,本人也曾提出過疑問,為什么是tornado,得到的答案是比較tornado,fla...

    Arno 評論0 收藏0
  • 利用Django開發(fā)個小型商城(一)

    摘要:利用開發(fā)個小型商城我們本期的教程是教大家如何利用開發(fā)一個小型的商城這里所說的小型商城只是功能上的簡樸。并于年月在許可證下發(fā)布。這套框架是以比利時的吉普賽爵士吉他手來命名的。是重量級選手中最有代表性的一位。 利用Django開發(fā)個小型商城 我們本期的教程是教大家如何利用Django開發(fā)一個小型的商城,這里所說的小型商城只是功能上的簡樸。 作者:黃志成(小黃) 作者博客:博客地址 前提 1...

    RobinTang 評論0 收藏0
  • Django定義信號(signals)

    摘要:中自定義了一些,用于監(jiān)聽一些操作,并發(fā)出通知官方解釋提供一個信號分發(fā)器,允許解耦的應(yīng)用在框架的其它地方發(fā)生操作時會被通知到。簡單來說,信號允許特定的通知一組某些操作已經(jīng)發(fā)生?;蛘咴谡埱髸r,記錄請求信息。 django中自定義了一些singals,用于監(jiān)聽一些操作,并發(fā)出通知 官方解釋: Django 提供一個信號分發(fā)器,允許解耦的應(yīng)用在框架的其它地方發(fā)生操作時會被通知到。 ...

    Hegel_Gu 評論0 收藏0
  • django創(chuàng)建model錯誤解答

    摘要:在沒有添加解決在中添加數(shù)據(jù)庫配置參數(shù)出錯解決查看中參數(shù)是否配置出錯,比如數(shù)據(jù)庫指定,數(shù)據(jù)庫權(quán)限,密碼之類因為在中自定義了命令,報命令重復(fù)解決刪掉自定制的,簡單的也可以在中,注釋掉模塊 1.在settings沒有添加AUTH_USER_MODEL auth.User.groups: (fields.E304) Reverse accessor for User.groups clashe...

    terro 評論0 收藏0

發(fā)表評論

0條評論

wizChen

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<