django-init is a project boilerplate for Django based projects.
Features
- Django 3.2.x
- Python 3.9.x
- Poetry Support
- Support for black!
- 12-Factor based settings management via django-environ, reads settings from
.env
if present. - Supports PostreSQL 13.0 (support of postgis-3.0 is available).
- Django Rest Framework 3.13.x.
- Uses
django_sites
instead ofdjango.contrib.sites
. - Uses mkdocs for project documentation. Optionally, password protect the docs when deployed via Ansible
- Uses pytest as test runner.
- Github Actions
- Custom
User
app, for easier extensibility. - Custom
Auth
app with JWT based Token Backend system withlogin
,logout
andcurrent_user_profile
modification views for easier extensibility. - robots.txt and humans.txt configured.
Optional
- Heroku Setup
- Ubuntu 20 LTS via Ansible
- Celery with flower integration.
- AWS S3 media storage
- Letsencrypt Support via certbot.
- Postgis Setup
- Newrelic
- Sentry
- GraphQL support via Graphene-Django (Optional)
- pre-commit hooks
Getting Started
Install cookiecutter with brew install cookiecutter
or pip install cookiecutter
.
cookiecutter gh:Fueled/django-init
It will ask you couple of questions required to generate the project. It will generate a folder containing all the files in your current working directory.
If you opt to setup the project automatically, it will also:
- initialize a git repo and bump initial tag and version.
- create a virtualenv in the folder
venv
inside the project. - install all the python dependencies inside it.
- create
poetry.lock
file after resolving dependencies and then generaterequirements.txt
andrequirements_dev.txt
for production and dev use respectively, for backward-compatibility. - create a postgres database and run the initial migration against it.
then only thing you'll need to do is:
cd
into the newgithub_repository
folder just created.- Run
make run
or activate virtualenv withpoetry shell
and run./manage.py runserver
Don't forget to carefully look at the generated README. Awesome, right?
You can also explore the wiki section for details on advance setup and usages.
Managing dependencies
Poetry
To guarantee repeatable installations, all project dependencies are managed using Poetry. The project’s direct dependencies are listed in pyproject.toml
.
Running poetry lock
generates poetry.lock
which has all versions pinned.
You can install Poetry by using pip install --pre poetry
or by following the official installation guide here.
Tip: We recommend that you use this workflow and keep pyproject.toml
as well as poetry.lock
under version control to make sure all computers and environments run exactly the same code.
Other tools
For compatibility, requirements.txt
and requirements_dev.txt
can be updated by running
poetry export -f requirements.txt -o requirements.txt
poetry export -f requirements.txt -o requirements_dev.txt --with dev
or
make generate_requirements
Articles
Release Policy
django-init
is a rolling release project. Commit and fixes are added to master
branch on regular basis and always have latest stable django and associated libraries. You are advised to follow-up with changelogs.
Changelogs
Refer to HISTORY.md.
Code of Conduct
Everyone interacting in the django-init project's codebase, issue trackers, chat rooms, and mailing lists is expected to follow the PyPA Code of Conduct.
Related Projects
- https://github.com/pydanny/cookiecutter-django
- https://github.com/wemake-services/wemake-django-template
- https://github.com/lionheart/django-template
Built with