Skip to main content

Organize your code and templates in a natural directory structure

Project description

Django Tree View

Organize your view code and templates and in a directory structure, and automatically generate urls for them.


"Tree View" refers the actual view function we've created, which processes a request according to code you write inside your "view tree".


  1. pip install django_tree_view

  2. In your file, add in a call to make_tree_view, passing in the python package name (dotted python path) of your view tree:

    from django_tree_view import make_tree_view
    urlpatterns = [

    Note: we're not using django's path() here, and we didn't specify a url regex. make_tree_view() returns an object which dynamically resolves urls, matching them whenever there is a corresponding directory (with a module) inside of your view tree.

    Note: you can use include('some_path/', [make_tree_view()]) if you want a url prefix.

  3. Optionally, add the full path to your view tree to the DIRS option of your DjangoTemplates backend:

            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'my_view_tree')],

    This will allow you to place page-specific templates inside the same directory which holds the view code for that url.

Organizing Your View Tree



When DEBUG and reloading, reload empty modules (not sure, but this might already be done).

"Single View Tree" approach

Our path resolver no longer matches when the "path directory" contains no file.

I think we should change how view trees are "installed". The user should define one global VIEW_TREE_ROOT. You can "install" reusable apps in your view tree by symlinking to them from your view tree.

This makes things easier to understand for the end user. They don't need understand make_tree_view(). You have a single directory containing your view tree. Period.

The challenge: if an app is distributed on pypi, symlinking to it (in a way that can be copied between server environments), is not trivial.

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-tree-view, version 4.1.0
Filename, size File type Python version Upload date Hashes
Filename, size django_tree_view-4.1.0-py3-none-any.whl (28.1 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size django_tree_view-4.1.0.tar.gz (15.7 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 Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page