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导入csv文件出现SyntaxError问题分析
Dec 15 Python
python字典快速保存于读取的方法
Mar 23 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
django项目搭建与Session使用详解
Oct 10 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 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
Zerg建筑一览
2020/03/14 星际争霸
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
php中的比较运算符详解
2013/10/28 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
python序列化与数据持久化实例详解
2019/12/20 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
Linux文件系统类型
2012/02/15 面试题
小区门卫值班制度
2014/01/24 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
护理见习报告范文
2014/11/03 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
资产移交协议书
2016/03/24 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS