Last active
March 1, 2025 13:22
-
-
Save kalafut/42bd31b2fdbf7a225da94e320d3e29ba to your computer and use it in GitHub Desktop.
Simple creation of a single-app django project
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# Simple creation of a single-app django project, as described in: https://zindilis.com/posts/django-anatomy-for-single-app/ | |
# | |
# ./django_init foo | |
# | |
# This will result is the following flat structure: | |
# | |
# . | |
# └── foo | |
# ├── manage.py | |
# ├── settings.py | |
# ├── urls.py | |
# ├── foo | |
# │ ├── __init__.py | |
# │ ├── admin.py | |
# │ ├── apps.py | |
# │ ├── migrations | |
# │ │ └── __init__.py | |
# │ ├── models.py | |
# │ ├── tests.py | |
# │ └── views.py | |
# └── wsgi.py | |
# | |
# Note: this script assumes a GNU-compatible sed is installed. On macOS you can get this easily with Homebrew. | |
prj=$1 | |
django-admin startproject $prj | |
cd $prj | |
mv $prj/* . | |
rm __init__.py | |
rm -rf $prj | |
sed -i 's/'"${prj}"'\.settings/settings/g' manage.py wsgi.py | |
sed -i 's/'"${prj}"'\.urls/urls/g' settings.py | |
sed -i 's/'"${prj}"'\.wsgi\.application/wsgi.application/g' settings.py | |
sed -i '/BASE_DIR = /s/Path(__file__).resolve().parent.parent/Path(__file__).resolve().parent/' settings.py | |
sed -i 's/'"${prj}"'\.wsgi\.application/wsgi.application/g' settings.py | |
./manage.py startapp ${prj} |
TFW you get an email about a gist you completely forgot about 😅. Thanks, updated!
Django ~3.1 uses pathlib
instead os
(yeeess!).
You should modify line 36 with
sed -i '/BASE_DIR = /s/Path(__file__).resolve().parent.parent/Path(__file__).resolve().parent/' settings.py
I forked and updated the your script here
thanks for the script!
@kidpixo Thanks! It has been a while since I've used Django (or python!), so I'll take your word for it and have updated the script as such.
No problem, I tested on the latest django.
Thanks for the verification!
It should be noted that you still need to add ${prj} to INSTALLED_APPS for things like models to be detected.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Looks like the referenced blog post can now be found at https://zindilis.com/posts/django-anatomy-for-single-app/