Skip to main content

Django User Agents

A django package that allows easy identification of visitor’s browser, OS and device information, including whether the visitor uses a mobile phone, tablet or a touch capable device. Under the hood, it uses user-agents.

Installation

  1. Install django-user-agents, you’ll have to make sure that user-agents is installed first:

    pip install pyyaml ua-parser user-agents
    pip install django-user-agents
  2. Configure settings.py:

    INSTALLED_APPS = (
        # Other apps...
        'django_user_agents',
    )
    
    # Cache backend is optional, but recommended to speed up user agent parsing
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
            'LOCATION': '127.0.0.1:11211',
        }
    }
    
    # Name of cache backend to cache user agents. If it not specified default
    # cache alias will be used. Set to `None` to disable caching.
    USER_AGENTS_CACHE = 'default'

Usage

Middleware

Add UserAgentMiddleware in settings.py:

MIDDLEWARE_CLASSES = (
    # other middlewares...
    'django_user_agents.middleware.UserAgentMiddleware',
)

A user_agent attribute will now be added to request, which you can use in views.py:

def my_view(request):

    # Let's assume that the visitor uses an iPhone...
    request.user_agent.is_mobile # returns True
    request.user_agent.is_tablet # returns False
    request.user_agent.is_touch_capable # returns True
    request.user_agent.is_pc # returns False
    request.user_agent.is_bot # returns False

    # Accessing user agent's browser attributes
    request.user_agent.browser  # returns Browser(family=u'Mobile Safari', version=(5, 1), version_string='5.1')
    request.user_agent.browser.family  # returns 'Mobile Safari'
    request.user_agent.browser.version  # returns (5, 1)
    request.user_agent.browser.version_string   # returns '5.1'

    # Operating System properties
    request.user_agent.os  # returns OperatingSystem(family=u'iOS', version=(5, 1), version_string='5.1')
    request.user_agent.os.family  # returns 'iOS'
    request.user_agent.os.version  # returns (5, 1)
    request.user_agent.os.version_string  # returns '5.1'

    # Device properties
    request.user_agent.device  # returns Device(family='iPhone')
    request.user_agent.device.family  # returns 'iPhone'

If you have django.core.context_processors.request enabled, user_agent will also be available in template through request:

{% if request.user_agent.is_mobile %}
    Do stuff here...
{% endif %}

View Usage

django-user_agents comes with get_user_agent which takes a single request argument and returns a UserAgent instance. Example usage:

from django_user_agents.utils import get_user_agent

def my_view(request):
    user_agent = get_user_agent(request)
    if user_agent.is_mobile:
        # Do stuff here...
    elif user_agent.is_tablet:
        # Do other stuff...

Template Usage

django-user_agents comes with a few template filters:

  • is_mobile

  • is_tablet

  • is_touch_capable

  • is_pc

  • is_bot

You can use all of these like any other django template filters:

{% load user_agents %}

{% if request|is_mobile %}
    Mobile device stuff...
{% endif %}

{% if request|is_tablet %}
    Tablet stuff...
{% endif %}

{% if request|is_pc %}
    PC stuff...
{% endif %}

{% if request|is_touch_capable %}
    Touch capable device stuff...
{% endif %}

{% if request|is_bot %}
    Bot stuff...
{% endif %}

You can find out more about user agent attributes at here.

Running Tests

`which django-admin.py` test django_user_agents --settings=django_user_agents.tests.settings --pythonpath=.

Changelog

0.4.0

  • Add support for Django 2.0 to 2.2. Thanks @adamchainz and @joehybird!

0.3.1

  • Fixed a bug when request have no META attribute

0.3.0

  • Python 3, thanks to @hwkns!

0.2.2

  • Fixed a bug that causes cache set/read to fail when user agent is longer than 250 characters

0.2.1

  • Fixed packaging

0.2.0

  • Added template filters

  • Added get_user_agent function in utils.py

0.1.1

  • Fixed a KeyError exception in the case of empty HTTP_USER_AGENT

0.1

  • Initial release

Release files for django-user-agents 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-user-agents 0.4.0
File Size Uploaded
django-user_agents-0.4.0.tar.gz 8.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-user-agents 0.4.0
File Interpreter ABI Platform
django_user_agents-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.1 kB

Release files / django-user_agents-0.4.0.tar.gz

Download URL django-user_agents-0.4.0.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
cda8ae2146cee30e6867a07943f56ecc570b4391d725ab5309901a8b3e4a3514
BLAKE2b-256 checksum
How to use checksums
37f2dd96cc880d7549cc9f67c8b1ad8e6695f9731658fdf8aa476f0bcb9c89c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.5

Release files / django_user_agents-0.4.0-py3-none-any.whl

Download URL django_user_agents-0.4.0-py3-none-any.whl
Size 8.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd9d9f7158b23c5237b2dacb0bc4fffdf77fefe1d2633b5814d3874288ebdb5d
BLAKE2b-256 checksum
How to use checksums
6ca331b2728702f13328cc65d6c8ed652ad8125a9a71489e445c11f188b39f79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.5

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.2

2 release files

0.3.0

2 release files

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page