Skip to content

Project template used at Fueled for scaffolding new Django based projects. 💫

License

Notifications You must be signed in to change notification settings

Fueled/django-init

Repository files navigation

django-init is a project boilerplate for Django based projects.

Build Status

Features

  • Django 4.1.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 of django.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 with login, logout and current_user_profile modification views for easier extensibility.
  • robots.txt and humans.txt configured.

Optional

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 generate requirements.txt and requirements_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:

  1. cd into the new github_repository folder just created.
  2. Run make run or activate virtualenv with poetry 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


Built with ♥ at Fueled