Skip to main content

Declarative class-based datastructures, for simple and flexible URLConfs in Django.

Project description


This is a somewhat-functional attempt to bring a more intuitive and less spaghettified syntax to Django's URLConf. It implements a declarative class-based syntax:

# (née 'URLConf')

from django.conf.urls import patterns
from url_namespaces import (Namespace, View, Redirect, \
ReverseRedirect, KeywordReverseRedirect)

class MyOtherURLs(Namespace):
""" URL namespaces are classes,
the URLs they contain are properties
of those classes. """

class Meta:
namespace = 'testapp:views'
app_name = 'testapp'
view_prefix = ''

rss = View(
arg='yo', other_arg='dogg')

index = View(

entry = View(

class MyURLs(Namespace):
""" Namespaces can be nested """

class Meta:
namespace = 'testapp'
app_name = 'testapp'
view_prefix = ''

pages = MyOtherURLs(r'^/pages/')

elsewhere = Redirect(

root = ReverseRedirect(
'testapp:index', blog="test")

entry_redirect = ReverseRedirect(
'testapp:entry', blog="%(blog)s", entry="%(entry)s")

entry_redirect_again = KeywordReverseRedirect(

# These classes generate standard URL patterns
# and use url(), reverse(), RegexURLResolver;
# the project aims for compatibility with Django's
# URLConf structures.

urlpatterns = patterns('',

Djano-URL-Namespaces implements a host of combinator objects, representing intuitive ideas e.g. `View`, `Redirect`, `Namespace` &c,
which can be modularly rearranged without the worries incumbent in getting ones' hands dirty with the rather fragile Django-native
URLConf syntax.

At the time of writing the project is in a state of somewhat indeterminate disrepair; namespaces don't nest quite right, there's a lot of sketchy code commented out and not enough docstrings, etc. If this is the sort of thing that floats your boat, know that I never turn away an entertaining pull-request, indeed!

Project details

Download files

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

Files for django-url-namespaces, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size django-url-namespaces-0.1.0.tar.gz (8.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page