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 相关文章推荐
python3中str(字符串)的使用教程
Mar 23 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
python2.7到3.x迁移指南
Feb 01 Python
PyQt5每天必学之拖放事件
Aug 27 Python
详解Django rest_framework实现RESTful API
May 24 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
Django框架视图函数设计示例
Jul 29 Python
python中sympy库求常微分方程的用法
Apr 28 Python
Python中threading库实现线程锁与释放锁
May 17 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生成随机密码的三种方法小结
2010/09/04 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
javascript 节点遍历函数
2010/03/28 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
Web服务器框架 Tornado简介
2014/07/16 Python
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
python os.fork() 循环输出方法
2019/08/08 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
EJB面试题
2015/07/28 面试题
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
环境工程专业个人求职信
2013/12/05 职场文书
C++程序员求职信范文
2014/04/14 职场文书
小学生操行评语
2014/04/22 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
解析MySQL索引的作用
2022/03/03 MySQL