Skip to main content

Django URL pattern helpers

Project description

Test Status Test Coverage Status

A nicer way to do URLs for Django models.

Replaces things like get_absolute_url with a .urls attribute that can reference other URLs and build sensible trees of things, and can then be accessed using instance.urls.name.

This is so you can have URLs on your model instances directly (rather than reversing through the url lookup functions, which is not only slow but often hard to supply arguments to). You can just throw {{ instance.urls.view }} into a template to get a link.

It also lets you use Python string formatting syntax to place arguments into URLs from the model instance itself or from other URLs in the same set.

Example:

import urlman

class Group(models.Model):

...

    class urls(urlman.Urls):
        view = "/{self.slug}/"
        users = "{view}users/"
        admin = "{view}admin/"


def my_view(request):
    group = ...
    return redirect(group.urls.view)

It’s suggested that you use “view” as the equivalent name for get_absolute_url, and have a function like this on your model:

def get_absolute_url(self):
    return self.urls.view

To build a full URL use the full method like this:

def my_view(request):
    group = ...
    return redirect(group.urls.admin.full(scheme='https'))

You can implement the get_scheme(url) and get_hostname(url) methods on your Url class to change your default theme and hostname from the urlman defaults of ‘http’ and ‘localhost’, respectively.

If you use Django REST Framework, you can use urlman.UrlManField to provide an object with a set of URLs. It is used like this (only the urls parameter is required):

from urlman.serializers import UrlManField

class MySerializer(ModelSerializer):
    urls = UrlManField(urls=['view', 'edit'], attribute='urls', full=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

urlman-2.0.3.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

urlman-2.0.3-py2.py3-none-any.whl (11.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file urlman-2.0.3.tar.gz.

File metadata

  • Download URL: urlman-2.0.3.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for urlman-2.0.3.tar.gz
Algorithm Hash digest
SHA256 40fe1b181914a61f0547e6686235b60fd74f325396bcaf1cdd0b63260e2984ae
MD5 b04a895e9003e75d5ee832a0f15c082d
BLAKE2b-256 968498b4475229b1fd611a4b60bfa456bc139357698958288ee096c02568e0fe

See more details on using hashes here.

File details

Details for the file urlman-2.0.3-py2.py3-none-any.whl.

File metadata

  • Download URL: urlman-2.0.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for urlman-2.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9712a0be2893b3032ab29478a15a7af19fec02fdb2ed33dd13fde478958b7fc0
MD5 f6e13b41e643982e6f92aee0f508df1f
BLAKE2b-256 9fcd5ab829b7c17c11e7654cd51fd6607b19cd03d5a81cb0985ae1c4000e9deb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page