Django

Deployment

  • The Django dev server is not production ready (which is obvious).
  • gunicorn
  • An actual web server is likely needed. Use gunicorn (WSGI) or uvicorn (ASGI) to run the Python program.
  • Django can serve static files but is not designed to, consider using an actual server like Nginx to serve the static files.

Modern Django Stack

  • Django, as a server-driven framework, provides an efficient way to manage ORM, to render HTML, and to handle data rendering and authentication.
  • However, it lacks interactivity and rich UI that is expected from modern web experience. For example, when clicking a link, the whole web page is refreshed. Client side JavaScript (AJAX) is still required for interactivity.

Django for APIs

  • Django REST Framework, the “DRF”, funded by O’Reilly, first released in 2011.

  • Django Ninja, 2020, inspired by FastAPI.

  • With Django Ninja, instead of using function return annotations, the return type should be placed in the decorator response argument — since the return value will be transformed by the response schema.

Snippets

  • python manage.py dbshell is helpful for navigating databases.