上次说到django的中间件,这次就来写一个。这次就是通过中间件来做一个类似于日志的记录。
一、创建一个中间件目录与中间件文件
中间件目录是Middle,log.py是中间件文件
现在来看看log.py文件:
也许写的比较low,就是想要记录一下访问项目的时间,ip,请求方式,请求url,返回的状态码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class
Row1(MiddlewareMixin):
def
process_request(
self
,request):
if
request.META.has_key(
'HTTP_X_FORWARDED_FOR'
):
ip
=
request.META[
'HTTP_X_FORWARDED_FOR'
]
else
:
ip
=
request.META[
'REMOTE_ADDR'
]
u
=
request.path_info
m
=
request.method
subfolder
=
time.strftime(
"%Y%m%d"
)
e
=
str
(time.strftime(
'%Y-%m-%d %H:%M:%S'
,time.localtime(time.time())))
path
=
str
(
'log/'
+
subfolder
+
'.log'
)
f
=
open
(path,
'a+'
)
f.write(
'['
+
e
+
']'
+
'\t'
+
m
+
'\t'
+
u
+
'\t'
+
ip
+
'\t'
)
f.close()
def
process_response(
self
,request,response):
subfolder
=
time.strftime(
"%Y%m%d"
)
path
=
str
(
'log/'
+
subfolder
+
'.log'
)
status
=
str
(response.status_code)
f
=
open
(path,
'a+'
)
f.write(status
+
'\n'
)
f.close()
return
response
|
当然,要创建这个log目录:
二、将这个中间件加入到django里
想要这个中间件生效,还需要在django的settings.py文件里加入这个中间件配置,在MIDDLEWARE里加入'Middle.log.Row1',
三、测试
访问网站,在log目录下就会生成以日期为命名的.log文件,文件内容为:
四、总结
通过上面,我们可以编写各种你需要的中间件,来更完善你的项目,同样也避免了在views.py文件里写过多的代码。比如访问限制、黑白名单等等。。
本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1940457,如需转载请自行联系原作者