Kürzlich bin ich auf das Projekt nanodjango gestoßen, das hilfreich ist wenn man Code Beispiele für Django mit anderen Teilen möchte ohne dafür ein eigenes Projekt anlegen zu müssen.

Django Projekte haben eine vorgegebene Struktur, die man am Besten mit dem eingebauten Kommandos startproject und startapp erzeugt. Manchmal ist das aber zu viel Overhead, wenn man nur etwas ausprobieren oder mit anderen teilen möchte.

Nano Django ermöglicht es ein Django Seite in einer einen Datei zu spezifieren. Sollte daraus doch ein Projekt werden, kann man mit Nanodjango die Datei in ein vollwertiges Projekt umwandeln.

Nachstehend eine Nano Django Datei die eine minimale Wagtail Installation darstellt.

# /// script
# dependencies = ["nanodjango", "wagtail"]
# ///

from nanodjango import Django

app = Django(
    SQLITE_DATABASE="db.sqlite3",
    EXTRA_APPS = [
        # wagtail basics
        'wagtail.contrib.forms',
        'wagtail.contrib.redirects',
        'wagtail.embeds',
        'wagtail.sites',
        'wagtail.users',
        'wagtail.snippets',
        'wagtail.documents',
        'wagtail.images',
        'wagtail.search',
        'wagtail.admin',
        'wagtail',
        'modelcluster',
        'taggit',
    ],
    # required by Wagtail
    WAGTAILADMIN_BASE_URL = "admin/",
    WAGTAIL_SITE_NAME = 'localhost'
)

# import later so this modules can access settings
from django.conf import settings
from django.urls import include
from wagtail.admin import urls as wagtailadmin_urls
from wagtail import urls as wagtailcore_urls

app.route(settings.WAGTAILADMIN_BASE_URL, include(wagtailadmin_urls))
app.route("", include(wagtailcore_urls))

if __name__ == "__main__":
    app.run()

Das Script entweder mit uv, pipx oder normal mit Python gestartet werden. Die Dependencies sind hier in (inline script metadata)[https://peps.python.org/pep-0723/] angegeben, das von uv und pipx ausgewertet werden kann. Im letzten Fall eines müssen die Dependencies manuell installiert werden.

uv run ./wagtail_example.py
pipx run ./wagtail_example.py
pip install nanodjango
python ./wagtail_example.py

Beim Start führt Nano Django automatisch migrate aus, dass heißt die Datenbank wird erstellt. Außerdem fragt Nano Django praktischerweise gleich nach User/Passwort des Superusers der dann automatisch angelegt wird.


Referenzen

nanodjango Dokumentation