ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

django-user_agents 完整安装与配置教程:从 pip 到 Memcached 缓存的清单式指南

2026/8/21 19:13:58 拓冰建站 浏览量
django-user_agents 完整安装与配置教程:从 pip 到 Memcached 缓存的清单式指南 django-user_agents 完整安装与配置教程从 pip 到 Memcached 缓存的清单式指南【免费下载链接】django-user_agentsA django package that allows easy identification of visitors browser, OS and device information, including whether the visitor uses a mobile phone, tablet or a touch capable device.项目地址: https://gitcode.com/gh_mirrors/dj/django-user_agentsdjango-user_agents 是一个专门用于识别访客浏览器、操作系统与设备信息的 Django 第三方包它能在后台解析 HTTP 请求中的 User-Agent帮你判断访客使用的是手机、平板、PC 还是支持触摸的设备。本文提供一份从 pip 安装到 Memcached 缓存加速的 django-user_agents 完整安装与配置教程全程清单式讲解即使你是 Django 新手也能按步骤轻松落地。django-user_agents 是什么为什么需要它在做移动端适配、统计上报或权限控制时我们常常需要知道来访者用的什么设备。手写正则解析 User-Agent 既繁琐又容易出错而 django-user_agents 把这件事封装成了开箱即用的工具识别浏览器family、版本号识别操作系统如 iOS、Android、Windows识别设备类型手机、平板、PC、触摸设备识别爬虫/机器人bot它底层依赖user-agents、ua-parser等成熟解析库你只需要调用几个简单的属性即可。核心逻辑集中在两个文件里解析入口在 django_user_agents/utils.py中间件实现则在 django_user_agents/middleware.py。安装前的准备工作环境与依赖清单 ✅开始安装前先确认你的环境满足以下条件项目要求Python2.7 / 3.40.4.0 版本均支持Django1.8 ~ 2.20.4.0 起支持 2.0~2.2缓存服务可选推荐 Memcached 或 Redis本包本身依赖django与user-agents而user-agents又依赖ua-parser和pyyaml建议一起安装避免遗漏。最快的 pip 安装步骤4 条命令搞定⚡这是最推荐的安装方式两步共 4 条命令即可完成pip install pyyaml ua-parser user-agents pip install django-user-agents安装完成后可以用下面的命令验证是否成功pip show django-user-agents如果你希望直接查看源码或参与二次开发也可以克隆仓库再安装git clone https://gitcode.com/gh_mirrors/dj/django-user_agents cd django-user_agents pip install -e .settings.py 配置方法注册应用与指定缓存 ️安装只是第一步接下来需要把django_user_agents注册进INSTALLED_APPS并告诉它使用哪个缓存INSTALLED_APPS ( # 其他应用... django_user_agents, ) # 指定缓存别名设为 None 可关闭缓存 USER_AGENTS_CACHE default这里有个小细节USER_AGENTS_CACHE默认使用default缓存别名。项目测试配置可以参考 django_user_agents/tests/settings.py里面同时展示了旧版MIDDLEWARE_CLASSES与新版MIDDLEWARE两种写法。中间件配置让 request 自带 user_agent 属性 在MIDDLEWAREDjango 1.10中加入UserAgentMiddlewareMIDDLEWARE [ # 其他中间件... django_user_agents.middleware.UserAgentMiddleware, ]如果你的 Django 版本较老低于 1.10请使用MIDDLEWARE_CLASSES列表路径写法相同。启用后每个请求都会自动获得request.user_agent属性采用懒加载实现未使用时不会增加解析开销。三种使用方式视图、模板与过滤器 方式一在视图中读取设备信息def my_view(request): # 假设访客使用的是 iPhone request.user_agent.is_mobile # True request.user_agent.is_tablet # False request.user_agent.is_touch_capable # True request.user_agent.is_pc # False request.user_agent.is_bot # False # 浏览器信息 request.user_agent.browser.family # Mobile Safari request.user_agent.browser.version_string # 5.1 # 操作系统信息 request.user_agent.os.family # iOS request.user_agent.os.version_string # 5.1 # 设备信息 request.user_agent.device.family # iPhone如果你不想依赖中间件也可以直接从工具函数拿结果django_user_agents/utils.py 中导出的get_user_agent(request)同样返回一个UserAgent实例。方式二在模板中直接判断启用django.core.context_processors.request后模板里就能直接使用request.user_agent{% if request.user_agent.is_mobile %} !-- 移动端专属内容 -- {% endif %} {% if request.user_agent.is_touch_capable %} !-- 触摸屏优化 -- {% endif %}方式三使用模板过滤器最简洁先{% load user_agents %}然后就能用 5 个现成过滤器它们的实现都定义在 django_user_agents/templatetags/user_agents.py{% load user_agents %} {% if request|is_mobile %} 移动端内容 {% endif %} {% if request|is_tablet %} 平板内容 {% endif %} {% if request|is_pc %} PC 内容 {% endif %} {% if request|is_touch_capable %} 触摸设备内容 {% endif %} {% if request|is_bot %} 爬虫友好内容 {% endif %}五种过滤器对应关系如下过滤器含义is_mobile是否为手机is_tablet是否为平板is_pc是否为 PCis_touch_capable是否支持触摸is_bot是否为爬虫Memcached 缓存配置让解析速度起飞 User-Agent 解析依赖正则规则匹配本身有一定开销。django-user_agents 内置了缓存机制先用 UA 字符串的 MD5 作为缓存键查询命中则直接返回结果未命中才真正解析。这一逻辑就在get_user_agent()与get_cache_key()中见 django_user_agents/utils.py并且它对超过 250 字符的超长 UA 也做了 MD5 处理不用担心缓存键超限。给settings.py加上 Memcached 后端即可生效CACHES { default: { BACKEND: django.core.cache.backends.memcached.MemcachedCache, LOCATION: 127.0.0.1:11211, } }小提示如果你用的是较新的 Django 版本推荐改用django.core.cache.backends.memcached.PyMemcacheCache后端不想用缓存时把USER_AGENTS_CACHE设为None即可关闭。常见问题排查清单 报错ImportError多半是pyyaml、ua-parser没装齐按上文 4 条命令重新安装。模板里request.user_agent取不到检查是否启用了django.core.context_processors.request。缓存一直不生效确认USER_AGENTS_CACHE指向的别名真实存在且 Memcached 服务已启动。空 UA 请求导致异常0.1.1 版本已修复空HTTP_USER_AGENT时的KeyError请升级到最新版本。老项目无法升级注意 0.4.0 支持 Django 2.0~2.2Python 3 兼容由 0.3.0 引入升级前先看版本记录。总结 按这份清单走完你的 Django 项目就拥有了完整的访客设备识别能力pip 安装依赖、注册应用、挂载中间件、三种方式读取设备信息最后用 Memcached 缓存把解析开销降到最低。无论是做移动端跳转、响应式适配还是爬虫防护django-user_agents 都能让你少写大量正则代码把精力放在真正的业务上。【免费下载链接】django-user_agentsA django package that allows easy identification of visitors browser, OS and device information, including whether the visitor uses a mobile phone, tablet or a touch capable device.项目地址: https://gitcode.com/gh_mirrors/dj/django-user_agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考