Django Project Directory Structure
Overview
The structure that sets up Django by default is very basic, when a project starts to grow, it starts to require a better approach, that deals with other aspects of development and deployment such as:
- deployment scripts
- separated tests by units
- having different environments for development, production (staging)
- documentation for the project
Recommended Django directory structure
- $HOME/.virtualenvs/PROJECT_NAME
- …
- REPO-ROOT/
git repo
- README.rst
Summary of the project and how to install it
- docs/
- deployment.rst
Step by step guide to deploy
- installation.rst
Setup for the project for other devs
- architecture.rst
How project evolves and what assumptions consider
- deployment.rst
- .gitignore
- requirements/
- base.txt
- local.txt
- production.txt
- test.txt
- Makefile
Deployment tasks
- PROJECT-ROOT/
- manage.py
- media/
only in development
- static/
non user generated static media
- templates/
site-wide
- base.html
- app-1/
- app-2/
- base.html
- APP-1/
- APP-2/
- config/
CONFIGURATION-ROOT
- init.py
- settings/
- init.py
- base.py
- local.py
- production.py
- urls.py
- wsgi.py
- README.rst
The preferred documentation format is reStructuredText .rst.
Keep virtual environment outside project
$HOME/.virtualenvs//
_media_ directory should exists only in development, for user generated
static media assets (e.g. photos).
assets (e.g. css) controlled by STATICFILES DIRS config variable.
_Media_ and _static_ directories in production should be located in
a static media server.
[Two Scoops Of Django] has the project structure they recommend implemented in the project [Cookiecutter](https://github.com/pydanny/cookiecutter-django).
References
- Recommended Django Project Layout by Revsys
- Two Scoops Of Django
- StackOverflow - Best practice for django project working directory structure
- StackOverflow - Django directory structure?
- Starting a Django 1.6 Project the Right Way by Jeff Knupp
- wildfish-django-starter https://github.com/wildfish/wildfish-django-starter
- Django project starter https://github.com/arocks/edge
- django-project-skeleton
comments powered by Disqus
- August 1, 2023
- How to create a reusable Django app and distribute it with PIP or publish to pypi.orgJune 29, 2021
- How To Serve Multiple Django Applications with uWSGI and Nginx in Ubuntu 20.04October 26, 2020
- How to add favicon to Django in 4 stepsSeptember 3, 2020
- Categories in Django with BreadcrumbsAugust 30, 2020
- How To Migrate From SQLite To PostgreSQL In Django In 3 stepsAugust 28, 2020
- Practical guide to internationalize a Django app in 5 steps.August 24, 2020
- Disable new users singup when using Django's allauth packageSeptember 3, 2019
- How to add ads.txt to Django as requested by Google AdsenseAugust 30, 2019
- Have multiple submit buttons for the same Django formJuly 2, 2019
- Better Testing with Page Object Design in DjangoMay 1, 2019
- Generating slugs automatically in Django without packages - Two easy and solid approachesFebruary 14, 2019
- How to set up Django tests to use a free PostgreSQL database in HerokuFebruary 13, 2019
- Dynamically adding forms to a Django FormSet with an add button using jQueryFebruary 6, 2019
- Use of Django's static templatetag in css file to set a background imageFebruary 1, 2019
- Activate Django's manage.py commands completion in Bash in 2 stepsJanuary 29, 2019
- Sending Emails with Django using SendGrid in 3 easy stepsJanuary 9, 2019
- Adding Users to Your Django Project With A Custom User ModelSeptember 21, 2018
- Setting Up A Factory For One To Many Relationships In FactoryboyApril 17, 2018
- Generate UML class diagrams from django modelsMarch 24, 2018
- Set Up Ubuntu To Serve A Django Website Step By StepJuly 3, 2017
- Django Project Directory Structure
- How to Have Different Django Settings for Development and Production, and environment isolationJune 10, 2016
- Django OverviewJune 2, 2016
Django Forms
- Adding a Cancel button in Django class-based views, editing views and formsJuly 15, 2019
- Using Django Model Primary Key in Custom Forms THE RIGHT WAYJuly 13, 2019
- Django formset handling with class based views, custom errors and validationJuly 4, 2019
- How To Use Bootstrap 4 In Django FormsMay 25, 2018
- Understanding Django FormsApril 30, 2018
- How To Create A Form In DjangoJuly 29, 2016
Articles
Subcategories
Except as otherwise noted, the content of this page is licensed under CC BY-NC-ND 4.0 . Terms and Policy.
Powered by SimpleIT Hugo Theme
·