Skip to main content

nanodjango

PyPI Documentation Tests Coverage

  • Write a Django site in a single file, using views, models and admin
  • Run it locally or in production, or share it as a standalone script
  • Automatically convert it to a full Django project when you're ready for it to grow
  • Try it out in your browser at the nanodjango playground

Head to nanodjango.dev to get a high level overview of what nanodjango can do, or you may like to watch a lighting talk.

Quickstart

Install nanodjango:

pip install nanodjango

Write your app in single .py file - for example:

from django.db import models
from nanodjango import Django

app = Django()

@app.admin
class CountLog(models.Model):
    # Standard Django model, registered with the admin site
    timestamp = models.DateTimeField(auto_now_add=True)

@app.route("/")
def count(request):
    # Standard Django function view, or class-based view
    CountLog.objects.create()
    return f"<p>Number of page loads: {CountLog.objects.count()}</p>"

@app.api.get("/add")
def add(request):
    # Django Ninja API support built in
    CountLog.objects.create()
    return {"count": CountLog.objects.count()}

@app.route("/slow/")
async def slow(request):
    import asyncio
    await asyncio.sleep(10)
    return "Async views supported"

Save that as counter.py, then set it up and run it:

nanodjango run counter.py

This will create migrations and a database, and run your project in development mode.

Convert it to a full site

If your project outgrows its single file, you can convert it into a full Django site:

nanodjango convert counter.py path/to/site --name=counter

Share an app

Nanodjango apps are great for sharing examples and prototypes.

Add inline script metadata at the top with your dependencies:

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

and call app.run() at the bottom:

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

Now your app can be run without installing anything, using uv or pipx:

# Run with uv
uv run ./script.py
# or with pipx
pipx run ./script.py

You can still manually install dependencies and run the script directly with Python:

pip install nanodjango
python script.py

Run management commands

Anything you would normally do with manage.py you can do with nanodjango manage:

nanodjango manage script.py check
nanodjango manage script.py makemigrations script
nanodjango manage script.py runserver 0.0.0.0:8000

Run in production

To run nanodjango with production defaults, use nanodjango serve:

nanodjango serve counter.py

This will use gunicorn, or uvicorn if you have async views. It will also turn off settings.DEBUG, and will not serve media files.

Alternatively, you can pass the app directly to a WSGI or ASGI server if you prefer:

gunicorn -w 4 counter:app
uvicorn counter:app

Further reading

For more details, see

Metadata

Release files for nanodjango 0.17.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nanodjango 0.17.1
File Size Uploaded Provenance
nanodjango-0.17.1.tar.gz 64.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nanodjango 0.17.1
File Interpreter ABI Platform
nanodjango-0.17.1-py3-none-any.whl Python 3 none any Details

Total release size: 121.9 kB

Release files / nanodjango-0.17.1.tar.gz

Download URL nanodjango-0.17.1.tar.gz
Size 64.3 kB
Tags Source
SHA-256 checksum
How to use checksums
fd1af192ceee50e61a79c3f868da91d1d5a43a8a29eee4f789965e6b545dc845
BLAKE2b-256 checksum
How to use checksums
507fc15afd718447da7947aa8194524d2f27048f42b4b18106799c80362769fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / nanodjango-0.17.1-py3-none-any.whl

Download URL nanodjango-0.17.1-py3-none-any.whl
Size 57.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
262341cb82eff41fb9e13242d250fc9470395845f28a414fe0c52cf865e9b46f
BLAKE2b-256 checksum
How to use checksums
b7fb4c66dc27af8bcdfd9b459d65e736b880701a3a171fe278e74ffa67fec9ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for nanodjango 0.17.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nanodjango-0.17.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.17.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page