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转换摩斯密码示例
Feb 16 Python
Django入门使用示例
Dec 12 Python
教你使用python画一朵花送女朋友
Mar 29 Python
python判断设备是否联网的方法
Jun 29 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Django如何使用jwt获取用户信息
Apr 21 Python
python为什么要安装到c盘
Jul 20 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 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实现的随机广告显示代码
2007/06/14 PHP
实用函数8
2007/11/08 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
innerText 使用示例
2014/01/23 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
python网络编程之读取网站根目录实例
2014/09/30 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
python集合是否可变总结
2019/06/20 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
大专生简历的自我评价
2013/11/26 职场文书
医德医风个人总结
2015/02/28 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL