5 分钟快速上手 django-request:Django 流量统计模块安装配置教程
想给自己的 Django 网站加上完整的访问统计,却又不想接入第三方统计服务?django-request 就是为此而生的开源 Django 流量统计模块。它能把每一次 HTTP 请求自动写入数据库,在 Django 后台提供流量趋势图、热门路径、来源网站、搜索关键词、在线用户等丰富报表。本教程将带你 5 分钟完成 django-request 安装配置,快速上手这一实用的流量统计工具。
django-request 是什么?核心功能一览
django-request 是一个轻量级、开箱即用的统计模块。它通过中间件自动记录请求信息,无需改动你的业务视图代码,即可获得以下能力:
- 📊 流量趋势图:按天展示 Hits(总请求数)、Unique Visits(独立访问数)、Unique Visitors(独立访客数)
- 📍 访问明细:记录每个请求的路径、方法、状态码、IP、来源(Referer)、浏览器与语言
- 🔍 SEO 洞察:统计访问来源网站(Top Referrers)和搜索关键词(Top Search Phrases)
- 🧑🤝🧑 在线用户统计:通过
active_users方法或模板标签,实时查看一段时间内的活跃用户 - 🧹 数据清理:内置
purgerequests命令,可定期清理过期记录
所有数据都保存在项目自身的数据库中,隐私可控、无需外部依赖,很适合中小型站点和自建分析场景。
安装前准备:环境要求与安装方式
django-request 对运行环境的要求非常简单:
- Python:3.8 及以上版本
- Django:4.2、5.0、5.1
- 依赖库:
python-dateutil
安装方式推荐使用 pip 一行搞定:
pip install django-request
如果你想体验最新开发版,也可以通过 git clone 获取源码后安装:
git clone https://gitcode.com/gh_mirrors/dj/django-request
pip install django-request/
更详细的安装说明可以参阅项目文档 docs/install.txt。
最快配置方法:django-request 安装配置三步走
完成安装后,只需三步即可让流量统计开始工作。
第一步:注册应用并执行数据库迁移
打开项目的 settings.py,在 INSTALLED_APPS 中加入 'request':
INSTALLED_APPS = [
# ... 其他应用
'request',
]
然后执行迁移命令,创建数据表:
python manage.py migrate
迁移文件位于 request/migrations/,模块初始化与数据模型分别定义在 request/apps.py 和 request/models.py 中。
第二步:添加请求记录中间件
在 MIDDLEWARE 中追加 request.middleware.RequestMiddleware:
MIDDLEWARE = [
# ...
'django.contrib.auth.middleware.AuthenticationMiddleware',
# 建议放在 AuthenticationMiddleware 之后
'request.middleware.RequestMiddleware',
]
中间件源码见 request/middleware.py。它会在每个响应返回时记录请求;如果你使用了 Flatpages,请把它放在 FlatpageFallbackMiddleware 之前,避免静态页被误记为错误页面。
第三步:配置站点基础地址
为了正确计算独立访客与站内来源,建议在 settings.py 中显式设置 REQUEST_BASE_URL:
REQUEST_BASE_URL = 'https://www.yoursite.com/'
如果不设置,默认会使用 django.contrib.sites 的当前站点域名。完成这三步后重启开发服务器,访问任意页面,数据就会开始累积。
查看统计报表:Django 后台的 Overview 概览页
登录 Django 管理后台,点击左侧的 Requests 进入请求列表,再点击右上角 Overview 按钮,即可打开流量概览页。这里集中展示了流量模块表格、最新请求、热门路径、错误路径、来源网站、搜索关键词和浏览器分布等插件面板,全部来自 request/plugins.py 中定义的插件体系。
概览页下方的流量趋势图(由 request/traffic.py 生成)直观呈现每日的请求量、独立访问数与独立访客数变化:
图中黄色曲线代表独立访客,浅蓝色代表独立访问,红色代表总请求量。波动趋势一目了然,方便你快速判断流量涨跌。
常用配置项:让流量统计更精准
django-request 提供了丰富的开关,全部以 REQUEST_ 开头,配置项列表见 request/settings.py 与 docs/settings.txt。这里推荐几个高频配置:
| 配置项 | 默认值 | 作用 |
|---|---|---|
REQUEST_IGNORE_AJAX | False | 设为 True 时忽略 AJAX 请求,得到更纯粹的页面访问数据 |
REQUEST_IGNORE_IP | 空元组 | 忽略指定 IP 的访问(如内部测试 IP) |
REQUEST_IGNORE_PATHS | 空元组 | 用正则忽略指定路径,例如 r'^admin/' 忽略后台自身流量 |
REQUEST_LOG_IP | True | 设为 False 时不记录真实 IP,保护访客隐私 |
REQUEST_ONLY_ERRORS | False | 只记录错误响应,把模块当成错误监控系统使用 |
REQUEST_PLUGINS | 7 个默认插件 | 自定义 Overview 页展示哪些面板 |
REQUEST_TRAFFIC_MODULES | 3 个指标 | 增删流量图与表格中的统计指标 |
例如,忽略搜索引擎爬虫与空 UA 的访问,可以这样写:
REQUEST_IGNORE_USER_AGENTS = (
r'^$',
r'Googlebot',
r'Baiduspider',
)
进阶功能:在线用户统计与数据清理
查看当前在线用户
django-request 不仅能统计流量,还能告诉你谁在线。在代码中调用:
from request.models import Request
Request.objects.active_users(minutes=15)
即可获得最近 15 分钟内有活动的用户集合,实现逻辑见 request/managers.py。在模板中,可以使用模板标签直接展示:
{% load request_tag %}
{% active_users in 10 minutes as user_list %}
{% for user in user_list %}
{{ user.username }}
{% endfor %}
模板标签定义在 request/templatetags/request_tag.py,用法示例可参考 docs/templatetags.txt。
定期清理历史数据
流量数据会持续增长,建议用管理命令定期清理。比如删除 1 个月前的记录:
python manage.py purgerequests 1 month --noinput
命令源码见 request/management/commands/purgerequests.py。--noinput 参数可跳过确认,方便配合 cron 定时任务自动执行。
常见问题排查
- 后台没有数据? 检查中间件是否已正确加入
MIDDLEWARE,并确认访问页面时没有 404 或 500。 - 希望不记录后台自身流量? 设置
REQUEST_IGNORE_PATHS = (r'^admin/',)即可。 - 需要更精细的指标? 在
REQUEST_TRAFFIC_MODULES中可加入Ajax、Error、Search、Secure、User等更多模块,例如'request.traffic.Error'可统计错误数。
结语
从安装到查看报表,django-request 的整个流程轻量且无侵入,只需配置一次中间件,即可长期稳定地收集流量数据。无论是做运营分析、SEO 关键词追踪,还是简单的在线用户展示,它都能在几分钟内帮你搞定。现在就按本教程的 django-request 安装配置步骤动手试试吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




