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 内置字符串处理函数的使用方法
Jun 11 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
深入浅出学习python装饰器
Sep 29 Python
django中send_mail功能实现详解
Feb 06 Python
python pandas时序处理相关功能详解
Jul 03 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Python在OpenCV里实现极坐标变换功能
Sep 02 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
php中变量及部分适用方法
2008/03/27 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
初步解析Python中的yield函数的用法
2015/04/03 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
python Selenium 库的使用技巧
2020/10/16 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
实验教师岗位职责
2014/02/13 职场文书
初中家长寄语
2014/04/02 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
结婚幸福感言
2015/08/01 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
利用python做数据拟合详情
2021/11/17 Python