A simple Django app to route requests, Inspired by Next.js App Router.
Project description
Django App Router
A library for creating routes in Django with a similar structure to Next.js App Router.
Features
- Dynamic routing
- Nested routing
- Route parameters
- Route groups
Requirements
- Python 3.8+
- Django 4.2+
Installing
Windows:
$ pip install -U django-app-router
Linux/MacOS:
$ python3 -m pip install -U django-app-router
Setup and Usage
urls.py:
from django_app_router import routers
router = routers.AppRouter()
router.add_app('your_app') # app directory name
urlpatterns = [
# ...
]
urlpatterns += router.urls
Alternatively, you can use the include
function. like this:
urlpatterns = [
# ...
path('', include(router.urls)),
]
Example
for example, define a route with the file page.py
in the routers
folder:
from django.shortcuts import render
def page(request):
"""home"""
# You can also name the page
# path(..., ..., name='home')
return render(request, 'page.html')
Route | Example URL | params |
---|---|---|
routers/page.py |
/ |
{} |
routers/info/page.py |
/info/ |
{} |
routers/(group)/about/page.py |
/about/ |
{} |
routers/user/[slug]/page.py |
/user/1/ |
{'slug': 1} |
Example folder structure
your_app
├── migrations
│ └── __init__.py
├── routers
│ ├── (auth)
│ │ ├── login
│ │ │ ├── page.html
│ │ │ └── page.py
│ │ └── register
│ │ ├── page.html
│ │ └── page.py
│ ├── info
│ │ └── page.py
│ ├── user
│ │ └── [user_id]
│ │ ├── page.html
│ │ └── page.py
│ ├── layout.html
│ ├── page.html
│ └── page.py
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── urls.py
└── views.py
You can see the full example in the example folder.
Notes
if you have .html
files in the routers
directory. ensure that the DIRS
setting in the TEMPLATES
setting includes the routers
directory.
TEMPLATES = [
{
# ...
'DIRS': [
# any other directories
BASE_DIR / 'your_app' / 'routers',
],
# ...
},
]
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-app-router-0.1.0.tar.gz
.
File metadata
- Download URL: django-app-router-0.1.0.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48dcd76909ebd158e37b19e3aa973199cd2434859cf9fb66ff6adf79245b5e1c |
|
MD5 | 1ce1438629d7723a7b3beeb70f9adf8f |
|
BLAKE2b-256 | 8d0c7e9fee2de6a26db2618612c370c689f91ed0ad4ce35f95cdbbf288928782 |
File details
Details for the file django_app_router-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: django_app_router-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | da5301d0432ece411744425172610fa5e8dbae69df43286e7efd4c64c5f2f7d7 |
|
MD5 | c570c3d20cc31ac2c405b95aafff18e5 |
|
BLAKE2b-256 | 7456f909e5ed8b6124d33937b61764858d640b35a6d779d286f1352bef828503 |