Ley de cookies con Django

13 de Febrero de 2014 · 2 min de lectura

cookies1.jpg

A estas alturas todo el que se dedique a la web ya debe conocer la ley de cookies LSSI. Si no la conocéis, en IAB Spain tienen una explicación simplificada y David Bonilla lo explica mejor y con más detalle.

Pese a lo absurdo e inviable de la ley y que incluso sus precursores en Reino Unido le han ido quitando hierro al asunto, en España han llegado las primeras multas, por lo que conviene hacer algo si no queremos ser los siguientes.

Si desarrollas con Django, puedes incorporar un aviso de cookies fácilmente a tu web con django-cookie-law siguiendo estos pasos:

  1. Instalar django-cookie-law en el virtualenv
    $ pip install -e git+https://github.com/APSL/django-cookie-law.git#egg=django_cookie_law-master
    
  2. Ponerlo en el requirements.txt.
    ...
    -e git+https://github.com/APSL/django-cookie-law.git#egg=django_cookie_law-master
    ...
    
  3. Añadir 'cookielaw' en INSTALLED_APPS
    INSTALLED_APPS = (
        ...
        'cookielaw',
        ...
    )
  4. Añadir 'django.core.context_processors.request' a TEMPLATE_CONTEXT_PROCESSORS, por ejemplo
    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.contrib.auth.context_processors.auth',
        'django.core.context_processors.debug',
        'django.core.context_processors.i18n',
        'django.core.context_processors.media',
        'django.core.context_processors.request',
        'django.core.context_processors.static',
        'django.core.context_processors.tz',
        'django.contrib.messages.context_processors.messages',
    )
  5. En el template base añadir al principio
    {% load staticfiles cookielaw_tags %}
  6. Añadir el CSS
    <link href="{% static "cookielaw/css/cookielaw.css"%}" rel="stylesheet" />
    
  7. Dentro del <body>, poner donde queramos el tag que insertará el html del banner
    {% cookielaw_banner %}
  8. Añadir el Javascript
    <script src="{% static "cookielaw/js/cookielaw.js"%}" type="text/javascript"></script>

Llegados a este punto, ya tendremos un banner en la zona superior con un texto explicativo y un botón para aceptar. Al pulsar el botón se crea una cookie por Javascript para que no vuelva a salir el mensaje en visitas posteriores.

Si no nos gusta el aspecto que tiene por defecto, podemos:

  1. Sobreescribir el template que trae por defecto por uno propio creando 'cookielaw/banner.html' en una app que se cargue antes que 'cookielaw' en INSTALLED_APPS. Ejemplo de html:
    {% load i18n %}
    <div id="CookielawBanner">
        <div class="container">
            <p>
                <a class="btn pull-right" href="javascript:Cookielaw.createCookielawCookie();">{% trans "Aceptar" %}</a>
    {% trans "Utilizamos cookies propias y de terceros para ofrecer nuestros servicios, mostrar publicidad y recoger información estadística. Al continuar con la navegación entendemos que lo acepta. Puede encontrar información sobre cómo borrar las cookies de su navegador en" %} <a href="https://www.google.com/search?q=borrar+cookies+navegador">Google</a>.
            </p>
        </div>
    </div>
  2. No incluir el CSS del punto 6 y crear el nuestro propio (el CSS que trae por defecto usa las classes de Bootstrap 2.3).

Podéis ver un ejemplo del resultado en Ensaimeitor.

Para terminar, si váis a usar el template que viene por defecto, ya tiene traducciones para alemán, inglés, español, italiano, polaco, portugués y ruso. Si os hace falta alguno más, fork y pull request ;-)

Comparte este artículo
Artículos recientes