This repository contains code for the Denig manuscript project, a partnership between RRCHNM and the Winterthur Museum.
Python 3.11.0 / Django 4.1 / Postgresql
The project uses Poetry for dependency and package management. To create your Django environment, navigate to the root (cloned) directory and do the following:
% cd winterthur-app
% poetry install
We also use pre-commit with black
and djhtml
to keep things nicely formatted.
% poetry run pre-commit install
% poetry run pre-commit autoupdate
Running manage.py
will require prepending poetry to the commands, like so:
poetry run python manage.py migrate
poetry run python manage.py tailwind build
poetry run python manage.py runserver
A Makefile exists to make life a little more convenient. The common commands are:
make preview
: preview the site locally; this runspoetry run python manage.py runserver
. You can also usenpm run serve
.make tailwind
: compile the CSS; this runspoetry run python manage.py tailwind start
and will reload the browser anytime updates happen.make mm
: performs Django'smakemigration
make migrate
: performs Django'smigrate
For security, we store configurations in a local .env
file. To get a local environment file to work with django-environ
, we install python-dotenv
:
% poetry add python-dotenv
Then add relevant files to an .env
file:
% echo DEBUG=True >> .env
% echo DJANGO_SECRET_KEY=$(poetry run python -c "import secrets; print(secrets.token_urlsafe())") >> .env
Update config/settings.py
to read the .env
file.
import environ
from dotenv import load_dotenv
load_dotenv()
env = environ.FileAwareEnv(
DEBUG=(bool, False)
)
[...]
# Update this existing value
DEBUG = env('DEBUG')
# Update this existing value
SECRET_KEY = env('DJANGO_SECRET_KEY')
When it comes time to connect to Postgres, we also store the Postgres connection string in .env
.