Consentimiento de cookies para Django

El banner es una etiqueta en base.html, con la clave de tus settings a través de un context processor. Los consentimientos que piden tus formularios se registran desde la vista con una llamada HTTP, cada uno con su justificante firmado.

Configúralo con tu agente de IA

Conecta el servidor MCP de Croombit a tu editor o agente de código y pega esto. Crea el sitio, las categorías de cookies y el banner, y edita tu código.

Con Croombit: crea un sitio para este proyecto y mantén las categorías de cookies que trae. Escribe el texto del banner y publícalo. Crea una clave publicable de TEST para localhost:3000. Es un proyecto Django: añade un context processor croombit que exponga CROOMBIT_PUBLISHABLE_KEY, pon la etiqueta de cmp.js al principio del <head> de templates/base.html y registra el campo newsletter de nuestra vista de alta con requests.post a /v1/consent usando CROOMBIT_SECRET_KEY.

El agente trabaja en TEST. Pasar a LIVE son dos pasos en la consola: verificar tu dominio y cambiar a una clave LIVE; consulta pasar a LIVE.

O a mano

1. Settings y un context processor

# settings.py
CROOMBIT_PUBLISHABLE_KEY = os.environ["CROOMBIT_PUBLISHABLE_KEY"]  # pk_test_… / pk_live_…
CROOMBIT_SECRET_KEY = os.environ["CROOMBIT_SECRET_KEY"]            # sk_… — server only

TEMPLATES[0]["OPTIONS"]["context_processors"].append("core.context_processors.croombit")

# core/context_processors.py
from django.conf import settings

def croombit(request):
    return {"CROOMBIT_KEY": settings.CROOMBIT_PUBLISHABLE_KEY}

2. Añade la etiqueta a base.html

{# templates/base.html #}
<head>
  <meta charset="utf-8">
  <script src="https://croombit.com/cmp.js" data-tc-api-key="{{ CROOMBIT_KEY }}"></script>
  {# …everything else after it #}
</head>

3. Retén los rastreadores

Etiquetas en tus plantillas: type="text/plain" más data-tc-consent. Quedan inertes hasta que el visitante acepta esa categoría.

<script type="text/plain" data-tc-consent="analytics" async
        src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
<script type="text/plain" data-tc-consent="analytics">
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXX');
</script>

4. Registra consentimientos desde la vista

Un POST /v1/consent normal con tu clave secreta. La cabecera Idempotency-Key hace que reintentar sea seguro. Consulta Registrar y consultar consentimiento.

import uuid
import requests
from django.conf import settings

# e.g. in the view that handles your signup form
requests.post(
    "https://api.croombit.com/v1/consent",
    headers={
        "Authorization": f"Bearer {settings.CROOMBIT_SECRET_KEY}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "subject": f"email:{user.email}",
        "purpose": "newsletter",
        "state": "GRANTED" if form.cleaned_data["newsletter"] else "DENIED",
        "channel": "signup_form",
    },
    timeout=10,
).raise_for_status()

Preguntas

Uso django-csp. ¿Qué permito?

https://croombit.com en script-src para el banner y https://api.croombit.com en connect-src para sus llamadas.

¿Funciona con Wagtail?

Sí. Wagtail renderiza con plantillas de Django; añade la etiqueta a la plantilla base que extienden tus páginas.