django-request 自定义插件开发指南:3步打造专属流量统计面板

django-request 自定义插件开发指南:3步打造专属流量统计面板

【免费下载链接】django-request django-request is a statistics module for django. It stores requests in a database for admins to see, it can also be used to get statistics on who is online etc. 【免费下载链接】django-request 项目地址: https://gitcode.com/gh_mirrors/dj/django-request

django-request 是一款开源的 Django 流量统计模块,它会自动把每一次请求存入数据库,并在后台管理界面生成访问量、在线人数等可视化报表。很多开发者用它做网站流量统计后,还想按自己的业务需求定制展示内容,而最优雅的方式就是开发自定义插件。本指南将带你从零开始,快速掌握 django-request 插件开发的完整流程,轻松打造专属流量统计面板。

为什么需要自定义插件?🤔

django-request 默认自带 8 个统计插件,包括流量概况、最新请求、热门路径、错误路径、来源网站、搜索关键词、浏览器占比、在线用户等。但实际业务中,你可能需要:

  • 统计某个特定接口的调用频率
  • 只展示登录用户的请求记录
  • 把 API 请求和网页请求分开统计

此时自定义插件就是最灵活的解决方案,无需修改核心代码,即插即用。

认识插件的加载机制

django-request 通过 REQUEST_PLUGINS 配置项声明插件列表,默认值定义在 request/settings.py 中。插件加载器会逐个导入这些模块路径并实例化,核心逻辑位于 request/plugins.py

换句话说,你只需要:写一个 Python 类 + 一个模板文件 + 注册到配置里,插件就会自动出现在后台的 Overview 统计面板上。

自定义插件开发三步走

第一步:编写插件类

在任意 app 下创建插件类,继承 request.plugins.Plugin。基类定义在 request/plugins.py,它负责自动生成标题、渲染模板。

最简单的插件只需重写 template_context() 方法,返回模板需要的上下文数据:

from request.plugins import Plugin
from request.models import Request

class PostRequests(Plugin):
    verbose_name = "POST 请求统计"

    def template_context(self):
        requests = Request.objects.filter(method="POST")[:10]
        return {"requests": requests}

第二步:创建插件模板

django-request 会优先查找 request/plugins/插件类名小写.html 这个模板,找不到则回退到 request/plugins/base.html。你还可以在类中显式指定 template 属性。

推荐复用自带的表格模板,例如参考 request/templates/request/plugins/toppaths.html 的写法,继承 request/plugins/table.html 并重写 table 代码块,几行代码就能做出专业样式的统计表格。

第三步:注册并刷新面板

把插件路径加入 REQUEST_PLUGINS 配置,例如:

REQUEST_PLUGINS = (
    "request.plugins.TrafficInformation",
    "request.plugins.LatestRequests",
    "yourapp.plugins.PostRequests",
)

保存后刷新后台 Overview 页面,你的自定义面板就上线了!🎉

进阶技巧:复用模型查询能力

django-request 的 Request 模型(见 request/models.py)提供了丰富的字段,如 methodpathresponserefereruser_agent 等。结合 request/managers.py 中的查询方法,你可以统计在线用户、唯一访客、搜索来源等数据。

参考自带插件 request/plugins.py 的实现,你会发现 TopPathsannotate 聚合路径访问量,TopBrowsersset_count 统计浏览器占比,这些模式都可以直接套用。

常见问题与调优建议 💡

  • 只想记录错误请求:开启 REQUEST_ONLY_ERRORS,把 django-request 当错误监控用
  • 忽略爬虫流量:通过 REQUEST_IGNORE_USER_AGENTS 配置正则过滤
  • 插件不显示:检查类名和模板文件名是否完全对应(类名转小写)

详细的配置项说明见 docs/settings.txt,模板标签用法见 docs/templatetags.txt

结语

通过自定义插件,你可以把 django-request 从通用流量统计模块升级为贴合业务的数据面板。从简单的 POST 请求统计,到复杂的多维度分析,整个过程只需三步,是不是很简单?快动手试试吧!

如果你还没安装 django-request,可通过 git clone https://gitcode.com/gh_mirrors/dj/django-request 获取源码,更多开发细节可参考项目文档。

【免费下载链接】django-request django-request is a statistics module for django. It stores requests in a database for admins to see, it can also be used to get statistics on who is online etc. 【免费下载链接】django-request 项目地址: https://gitcode.com/gh_mirrors/dj/django-request

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值