Coder Social home page Coder Social logo

null-none / django-useragent Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 0.0 17 KB

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.

License: MIT License

Python 98.29% HTML 1.71%
django parser user-agent useragent

django-useragent's Introduction

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.

Installation

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

    pip install django-useragent
    
  2. Configure settings.py:

    INSTALLED_APPS = (
        # Other apps...
        'django_useragent',
    )
    
    # 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_useragent.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-useragent 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_useragent --settings=django_useragent.tests.settings --pythonpath=.

Changelog

0.5.0

  • Add support for Django 2.2 to 3.2.

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

django-useragent's People

Contributors

null-none avatar

Stargazers

Isa Arifoglu avatar Josh Thomas avatar Fabio Caccamo avatar Olivier Philippon avatar Camron Flanders avatar Niccolò Mineo avatar Uzzal Hossain avatar Jeff Triplett avatar Roman avatar

Watchers

 avatar  avatar

django-useragent's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.