Skip to main content

django-shorturls

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

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

Patches welcome: http://github.com/bfirsh/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 shorturl %}
    {% 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.

SHORTURLS_DEFAULT_CONVERTER

The converter that is used to translate between short URLs and model IDs. Defaults to the built in base 62 conversion.

Available converters:

  • shorturls.baseconv.base62 Base 62 encoding.

  • shorturls.baseconv.base32 Douglas Crockford’s base 32.

  • shorturls.baseconv.hexconv Hex encoding.

  • shorturls.baseconv.bin Binary encoding, because why not.

Release files for django-shorturls 3.0.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-shorturls 3.0.0
File Size Uploaded
django_shorturls-3.0.0.tar.gz 8.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-shorturls 3.0.0
File Interpreter ABI Platform
django_shorturls-3.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.9 kB

Release files / django_shorturls-3.0.0.tar.gz

Download URL django_shorturls-3.0.0.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6117da6b9f0442984b4ec02fa320b6c4cb8da71b447c6a29c790ca5b663476ef
BLAKE2b-256 checksum
How to use checksums
afe360a24b4547a2f508a9863bf02cab6dfccdcd6f26ca95c57a8daf64d86e03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / django_shorturls-3.0.0-py3-none-any.whl

Download URL django_shorturls-3.0.0-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
615548e1d303e40ef414cf828ec3ced464fd96440e86c8a0083c1d57999aa9a1
BLAKE2b-256 checksum
How to use checksums
9be2c20626fc167920d15ab4e4bd7d68e5560d901badea9959d1bde43b514942
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

2.0.0

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0

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