Skip to content

simonw/django-shorturls

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-shorturls
================

A custom URL shortening app for Django, including easy ``rev=canonical``
support.

Most code was originally by Simon Willison; see
http://simonwillison.net/2009/Apr/11/revcanonical/ for details. Improved
slightly and packaged by Jacob Kaplan-Moss.

Patches welcome: http://github.com/jacobian/django-shorturls

Usage
=====

So, you want to host your own short URLs on your Django site:

1. In your settings, define a set of prefixes for short URLs::

        SHORTEN_MODELS = {
            'A': 'myapp.animal',
            'V': 'myapp.vegetable',
            'M': 'myapp.mineral'
        }

   The keys are string prefixes; they can be any string, actually,
   but since we're going for short a single character is probably good.
   
   Values are the (hopefully-familiar) ``"<app-name>.<model-class>"`` used
   by Django to identify a model. Remember: ``app-name`` is the
   (case-sensitive) last bit of your app's name in ``INSTALLED_APPS``, and
   ``<model-class>`` is your model class's name, lowercased.
   
   Make sure your models have a ``get_absolute_url()`` method defined.
    
2. Wire up the redirect view by adding to your URLconf::

        ('^short/', include('shorturls.urls'))
        
3. If you'd like to quickly link to shortened URLs in your templates, stick
   ``"shorturls"`` in ``INSTALLED_APPS``, and then in your templates do::
   
        {% load shorturl %}
        <a href="{% shorturl object %}">...</a>
        
   (where ``object`` is a model instance).
  
   Alternatively::
  
        {% load shorturls %}
        {% revcanonical object %}
        
   This generates the whole ``<link rev="canonical" href="...">`` tag for
   you.
            
That's it.

If you'd like more control, keep reading.

Settings
========

Available settings are:

``SHORTEN_MODELS``
    You've seen this one.
    
``SHORT_BASE_URL``
    If defined, the ``shorturl`` and ``revcanonical`` template tags will
    prefix generated URLs with this value. Use this if you've got a shorter
    domain name you'd like to use for small URLs.
    
    For example, given ``SHORT_BASE_URL = 'http://exm.pl/'``, ``{% shorturl
    obj %}`` would return something like ``http://exm.pl/AbCd``.
    
``SHORTEN_FULL_BASE_URL``
    The domain to redirect to when redirecting away from the small URL.
    Again, you'll use this if your short URL base and your "real" site
    differ.
    
    If not defined, the redirect view will try to guess the proper domain by
    consulting the ``django.contrib.sites`` framework, if installed, or the
    requested domain, if not.

About

A URL shortening app for Django.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages

  • Python 100.0%