run commands from root of the django project
python3 -m venv .venv
import os
import pathlib as pl
import subprocess as sp
cwd = pl.Path(os.getcwd())
if not cwd.glob(".gitignore"):
exit(1)
sp.Popen(["/bin/sh", ".venv/bin/activate"])
sp.run("python -m pip install -r requirements-base.txt", shell=True)
sp.run("python -m pip install -r requirements-dev.txt", shell=True)
sp.run("python -m pip freeze > requirements.txt", shell=True)
import os
import pathlib as pl
import subprocess as sp
cwd = pl.Path(os.getcwd())
if not cwd.glob(".gitignore"):
exit(1)
sp.Popen(["/bin/sh", ".venv/bin/activate"])
sp.run("python -m pip install -r requirements-base.txt", shell=True)
sp.run("python -m pip freeze > requirements.txt", shell=True)
source .venv/bin/activate
django-admin startproject dj_conf .
django-admin startapp core
django-admin startapp api
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
# .env
SECRET_KEY="generated key"
# .env.dev
DEBUG=True
ALLOWED_HOSTS="*"
CSRF_COOKIE_SECURE=False
SESSION_COOKIE_SECURE=False
SECURE_SSL_REDIRECT=False
# .env.prod
DEBUG=False
ALLOWED_HOSTS="*"
CSRF_COOKIE_SECURE=True
SESSION_COOKIE_SECURE=True
SECURE_SSL_REDIRECT=True
- settings are split across 3 files: base, dev and prod
-
setup models and register with admin
-
fixtures for initial data
-
to prepare fixtures after models are setup and some data added using admin page
- make admin user
./manage.py createsuperuser
./manage.py dumpdata auth > ./core/fixtures/core/admin.json
./manage.py dumpdata core > ./core/fixtures/core/sample-data.json
- initial load
./manage.py makemigrations && ./manage.py migrate
./manage.py loaddata core/admin.json core/sample-data.json
./manage.py runserver --settings=dj_conf.settings.dev
./manage.py runserver --settings=dj_conf.settings.prod