Django自定義中間件簡單介紹

第一步:項目的settings.py文件中

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',
    # 自定義中間件
     'Middle.test.TestMiddleware',
)

注意:中間件的順序,這個中間件調用是有順序的,詳細的順序自行百度查找

第二步: 在項目的目錄中創建一個python package類型的文件夾(Middle),在此文件夾中新建一個python文件(TestMiddleware.py)

# -*- coding:utf-8 -*-
# __author = 'Suny'


class TestMiddleware(object):


    def process_request(self, request):
        """
        發起http請求時會執行此函數的內容
        :param request:
        :return:
        """
        print '中間件請求!'

    # http請求響應時會執行此函數的內容
    def process_response(self, request, response):
        print '中間件響應 !'
        return response

    def process_exception(self, request, exception):
        """
        視圖函數中有報錯信息時執行此函數的內容
        :param request:
        :param exception:
        :return:
        """
        print '視圖報錯中間件返回信息 !'
        return exception

    def process_view(self, request, callback, callback_args, callback_kwargs):
        """
        request請求完了後,再返回執行第一個view直到最後一個view
        :param request:
        :param callback:
        :param callback_args:
        :param callback_kwargs:
        :return:
        """
        print '中間件view !'

    def process_template_response(self, request, response):
        '''
        視圖函數的返回值中,如果有render方法,才被調用
        :param request:
        :param response:
        :return:
        '''
        print '視圖中有render方法, 中間件返回render'
        return response

第三步: 項目app的urls.py中添加一個url

urlpatterns = [
    url(r'^article/$', app01_view.article, name='article'),
]

第四步: 項目app的views.py中添加一個視圖函數

def article(request):
    print '執行article !'
    return render(request, 'article.html')

注意:這裏只是簡單的介紹,更詳細的自定義中間件(Middleware)和具體需要處理的問題還是要根據自己項目的需求


注意:以上內容是個人使用的隨手記錄, 就是介紹了下簡單的使用

歡迎大家來吐槽,準備好瓜子飲料礦泉水,開整!!!

---------------------------------------------------------------------------------------

搞笑一則:能動手儘量別吵吵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章