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的函数嵌套的使用方法
Jan 24 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
Python字符串的修改方法实例
Dec 19 Python
Tensorflow分批量读取数据教程
Feb 07 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
python继承threading.Thread实现有返回值的子类实例
May 02 Python
实例代码讲解Python 线程池
Aug 24 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
python如何进行基准测试
Apr 26 Python
总结Python连接CS2000的详细步骤
Jun 23 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
mysql时区问题
2008/03/26 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
理解Python中的With语句
2015/02/02 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
开始着手第一个Django项目
2015/07/15 Python
简单了解django索引的相关知识
2019/07/17 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
不尊敬老师检讨书范文
2014/11/19 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript