Start a demo, no card required https://diploi.com/component/django
Getting started guide https://diploi.com/blog/hosting_django_apps
A generic Django component ready to build your Django app.
This component was kickstarted running
django-admin startproject djangoapp
and it has DEBUG=true inside settings.py by default
To secure your Django app, you must update your SECRET_KEY in settings.py
By default all Django apps use SQlite, which you must update to use your database of choice inside settings.py
Uses the official astral-sh/uv:3.13-alpine Docker image and Django
- You must generate a new SECRET_KEY for your own application
- Remember to update the database settings inside settings.py to match your own database config
- In production you must remember to update your settings.py, by changing
DEBUG=falseand if you want to use external CDNs for your static files, you will need to update theSTATIC_ROOT - For production and development, you are free to change the app server runner, so for example, if you prefer
uwsgiyou can change it directly on the Dockerfile for production and development - To install new packages, this component uses
uv, so you can add new packages usinguv add <name-of-package>
- In the Dashboard, click Create Project +
- Under Pick Components, choose Django
- In Pick Add-ons, you can add one or multiple databases to your app
- Choose Create Repository, which will generate a new GitHub repo
- Now click Launch Stack
Will run
uv sync
when component is first initialized, and uv run --isolated python3 manage.py runserver 0.0.0.0:8000 when deployment is started.
Will build a production ready image. The first step runs the command:
uv sync --locked --no-dev --group deploy
Which installs gunicorn, as part of --group=deploy in pyproject.toml, to install all necessary dependencies for production.
To get all static files, the image runs the command:
uv run --locked --no-dev python manage.py collectstatic --noinput to get all static files.
Lastly, the image will start the production server with the command:
uv run gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3 --log-level info
-
Create a superuser
uv run python manage.py createsuperuser -
Run migrations
uv run python manage.py migrate -
Switch the database to Postgres instead of SQLite
- Install the Postgres driver (already present in
pyproject.toml, but if missing runuv add "psycopg2-binary"). - In
djangoapp/settings.py, setDATABASES["default"]to read fromDATABASE_URL(e.g. usingenv.dj_db_urlifenvirons[django]is installed). A typical value:
postgres://postgres:[email protected]:5432/app - Export
DATABASE_URLin your environment (or add to.env), then runuv run python manage.py migrate.
- Install the Postgres driver (already present in
-
Adjust CSRF trusted origins
Indjangoapp/settings.py, the list comes fromCSRF_TRUSTED_ORIGINSenv var. Add hosts as a comma-separated list, e.g.:
export CSRF_TRUSTED_ORIGINS="https://example.com,https://admin.example.com"
After updating, restart the app so Django picks up the new origins.