Django实现的自定义访问日志模块示例


Posted in Python onJune 23, 2017

本文实例讲述了Django实现的自定义访问日志模块。分享给大家供大家参考,具体如下:

在Django默认没有访问日志模块,但是我们可以通过Django的Middleware来实现一个自己的访问日志模块。

首先在Django的工程下创建一个middleware.py文件,内容如下:

#!/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() 应当返回 None 或 HttpResponse 对象。

如果返回 None , Django将继续处理这个 request , 执行后续的中间件, 然后调用相应的view.

如果返回 HttpResponse 对象, Django 将不再执行 任何 其它的中间件(不论种类)以及相应的view. Django将立即返回该 HttpResponse .

然后修改settings.py文件,在MIDDLEWARE_CLASSES部分加入上面创建的AccessMiddleware,比如:(见最后面一行)

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',
)

重启服务,然后再访问任意一个页面就会看到有日志输出了。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中的time模块与datetime模块用法总结
Jun 30 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
python生成器与迭代器详解
Jan 01 Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
利用python查看数组中的所有元素是否相同
Jan 08 Python
总结Python变量的相关知识
Jun 28 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 02 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 Python
详解Python文本操作相关模块
Jun 22 #Python
python字符串过滤性能比较5种方法
Jun 22 #Python
Python编程实现的简单Web服务器示例
Jun 22 #Python
Python实现复杂对象转JSON的方法示例
Jun 22 #Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 #Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 #Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 #Python
You might like
php模板函数 正则实现代码
2012/10/15 PHP
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
php之readdir函数用法实例
2014/11/13 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Python操作CouchDB数据库简单示例
2015/03/10 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Django中几种重定向方法
2015/04/28 Python
Python基于DES算法加密解密实例
2015/06/03 Python
Python获取央视节目单的实现代码
2015/07/25 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
Python FFT合成波形的实例
2019/12/04 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
八年级语文教学反思
2014/02/11 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang