技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類(lèi) >

Django實(shí)現(xiàn)的自定義訪問(wèn)日志模塊教程

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2019-10-25 18:01┆點(diǎn)擊:

在Django默認(rèn)沒(méi)有訪問(wèn)日志模塊,但是我們可以通過(guò)Django的Middleware來(lái)實(shí)現(xiàn)一個(gè)自己的訪問(wèn)日志模塊。

首先在Django的工程下創(chuàng)建一個(gè)middleware.py文件,內(nèi)容如下:

#!/usr/bin/env python # -*- coding: utf-8 -*- import time class AccessMiddleware(object): def process_request(self, request): meta = request.META print "[%s] PATH_INFO=%s, REMOTE_ADDR=%s, HTTP_USER_AGENT=%s" \ %(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), meta['PATH_INFO'], meta['REMOTE_ADDR'], meta['HTTP_USER_AGENT']) return None def process_response(self, request, response): return response

其中 process_request() 應(yīng)當(dāng)返回 None 或 HttpResponse 對(duì)象。

如果返回 None , Django將繼續(xù)處理這個(gè) request , 執(zhí)行后續(xù)的中間件, 然后調(diào)用相應(yīng)的view.

如果返回 HttpResponse 對(duì)象, Django 將不再執(zhí)行 任何 其它的中間件(不論種類(lèi))以及相應(yīng)的view. Django將立即返回該 HttpResponse .

然后修改settings.py文件,在MIDDLEWARE_CLASSES部分加入上面創(chuàng)建的AccessMiddleware,比如:(見(jiàn)最后面一行)

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', 'commons.middleware.AccessMiddleware', )

重啟服務(wù),然后再訪問(wèn)任意一個(gè)頁(yè)面就會(huì)看到有日志輸出了。