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.include_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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django-app-router-0.1.1.tar.gz.
File metadata
- Download URL: django-app-router-0.1.1.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 |
ff4e0da9c24ffa6987d88590c1a14ac982e8402d912e22c3ba4a2441b16a48c2
|
|
| MD5 |
b1a14a58c1a5001e68c93e279d0b9ea5
|
|
| BLAKE2b-256 |
23e654bdf9f6b44b762a6cff835437ef27fd2e6e18e9306fe15960aeec4264fa
|
File details
Details for the file django_app_router-0.1.1-py3-none-any.whl.
File metadata
- Download URL: django_app_router-0.1.1-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 |
7c0cc81536b7de412a0141d6a9bcf842ec216c548acbf0822c53192efaed007b
|
|
| MD5 |
74942ca4fe8af0a7bb401e0eaad77767
|
|
| BLAKE2b-256 |
06a546542c6dd137647d8deed508a38814f53490f6d70231c2266915eaa04b5f
|