You need to enable JavaScript to run this app. 新手开发Django应用 求django-cookie-consent配置使用教程
优惠活动
大模型
产品
解决方案
定价
更多

新手开发Django应用 求django-cookie-consent配置使用教程

(你已经完成了包的安装,下面全是不需要额外基础就能照着走的步骤)

第一步:完成基础配置让提示条正常弹出

  • 在项目的settings.py文件中,找到INSTALLED_APPS配置列表,依次新增2个依赖项:bootstrap4(包默认用bootstrap渲染提示条,不装会样式错乱)、cookie_consent
  • 找到MIDDLEWARE配置列表,在django.contrib.sessions.middleware.SessionMiddleware的后面一行新增中间件:cookie_consent.middleware.CookieConsentMiddleware(这个位置不能错,否则会读不到用户的会话信息,保存的选择刷新就丢失)
  • 打开项目根目录的urls.py,在urlpatterns列表中新增路由:path('cookie_consent/', include('cookie_consent.urls'))(这是专门用来接收用户保存Cookie选择的接口,漏了的话点按钮会报404)
  • 执行数据库迁移命令:python manage.py migrate cookie_consent(包需要单独的表存储用户的同意记录,不执行会报数据库表不存在的错误)
  • 找到项目通用的全局模板base.html,在</body>闭合标签前新增两行代码:
    {% load cookie_consent_tags %}
    {% render_cookie_consent %}
    
    这行代码会自动在所有继承base.html的页面上渲染可交互的Cookie同意提示条,不需要自己写前端页面。

第二步:配置Cookie分组与单个Cookie规则

这个包默认不需要自己写复杂的判断逻辑,只要通过配置定义好分组和单条Cookie的规则,前端会自动渲染对应的选择选项。

  • 分组定义:一般通用的合规分组为3类,你可以根据自己网站的实际需求调整,在settings.py中新增COOKIE_CONSENT_GROUPS配置:
    • 必要组:网站正常运行必须的Cookie,比如登录态、CSRF校验的Cookie,配置中设置为不可拒绝
    • 分析组:网站统计、流量分析类的Cookie,比如百度统计、GA的追踪Cookie
    • 营销组:广告追踪、营销转化类的Cookie,这类必须允许用户选择是否同意
  • 单个Cookie规则配置:在settings.py中新增COOKIE_CONSENT_VARIANTS配置,每个条目对应一个网站会用到的具体Cookie,标注清楚名称、所属分组、用途说明、过期时间。你可以直接参考下面的入门示例写:

    COOKIE_CONSENT_VARIANTS = {
    'csrftoken': {
    'name': 'csrftoken',
    'max_age': 31449600,
    'group': 'required',
    'description': '用于保障网站表单提交安全的必要Cookie,无法拒绝'
    },
    'sessionid': {
    'name': 'sessionid',
    'max_age': 1209600,
    'group': 'required',
    'description': '用于存储用户登录会话的必要Cookie,无法拒绝'
    },
    '_ga': {
    'name': '_ga',
    'max_age': 63115200,
    'group': 'analytics',
    'description': '用于统计网站访问量的分析Cookie,可随时拒绝'
    }
    }

第三步:监听用户选择、落实拒绝规则

包本身已经内置了所有监听和存储逻辑,不需要自己写接口接收用户的选择请求,只需要在自己的业务代码里做判断就行:

  • 自动监听逻辑:中间件会自动把用户的选择结果存储到名为cookie_consent的Cookie中,后续所有请求都能自动读取这个结果,不需要手动解析Cookie值
  • 前端模板里的判断逻辑:只要用户没同意对应分组,就不加载对应代码,避免违规。用自带的模板标签判断,示例:
    {% load cookie_consent_tags %}
    {% cookie_consent_accepted 'analytics' %}
    <!-- 只有用户明确同意分析类Cookie,才会输出这段统计代码到页面 -->
    <script>
        // 你的网站统计、分析脚本放在这里
    </script>
    {% endcookie_consent_accepted %}
    
  • 后端视图里的判断逻辑:如果你的业务逻辑需要根据用户的Cookie选择执行对应操作,直接调用自带的工具函数即可,不需要自己解析Cookie:
    from cookie_consent.util import is_cookie_accepted
    
    def user_profile_view(request):
        # 判断用户是否同意分析类Cookie
        if is_cookie_accepted(request, '_ga'):
            # 执行需要用户同意才能运行的逻辑,比如记录用户访问行为
            pass
    
  • 拒绝后的自动清理逻辑:如果用户在提示条里修改选择、拒绝了某类Cookie,可以调用包自带的清理函数,自动把对应分组下的所有Cookie从用户浏览器中删除,不需要自己写循环删Cookie的代码。

入门阶段容易踩的配置坑

  • 中间件顺序放错:如果把CookieConsentMiddleware放在SessionMiddleware前面,会导致读取不到用户会话,保存的选择刷新页面就丢失
  • 漏加URL路由:用户点击“保存选择”按钮时会触发404错误,因为找不到处理提交请求的接口
  • 脚本加载位置错误:把统计、广告脚本直接放在页面上,没有用同意判断包裹,就算弹出了提示条,脚本也会在用户未同意时就加载,不符合合规要求
  • 遗漏迁移步骤:启动服务访问页面时会报数据库表不存在的错误

内容的提问来源于stack exchange,提问作者FlawlessCalamity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 00:45:01