.gitignore for Django + Python

Complete .gitignore for Django web applications with full Python environment coverage.

Quick presets

Selected (2)
DjangoPython
Your selections never leave your browser. Generation happens entirely client-side.
Raw

78 patterns · 1006 B

# Generated by DevZone Tools — https://devzone.tools/tools/gitignore-generator
# Templates: Python, Django
# 2026-04-20

# ---- Python ----
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
*.manifest
*.spec
pip-log.txt
pip-delete-this-directory.txt
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
*.mo
*.pot
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
instance/
.webassets-cache
.scrapy
docs/_build/
.pybuilder/
target/
.ipynb_checkpoints
profile_default/
ipython_config.py
.pdm.toml
__pypackages__/
celerybeat-schedule
celerybeat.pid
*.sage.py
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
.spyderproject.db
.spyproject
.ropeproject
/site
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/
cython_debug/

# ---- Django ----
# Django
*.pyc
media
staticfiles/

Why use Django + Python together?

Django projects need two layers of coverage: Python language artifacts (__pycache__, .pyc files, virtual environments) and Django-specific files (local_settings.py, SQLite databases, collected static files, uploaded media).

The db.sqlite3 file is the development database and must never be committed — it contains local data and changes constantly. Use Django migrations (which should be committed) to define the schema. The staticfiles/ directory generated by collectstatic is deployment output and should also be ignored.

Frequently asked questions

Do I need to commit .gitignore?
Yes — .gitignore should be committed to the repository so all collaborators benefit from the same ignore rules.
How do I add custom patterns?
Open your .gitignore file and add the pattern on a new line. Use # for comments, * for wildcards, / to match directories, and ! to un-ignore a previously ignored path.
How do I ignore a file that is already tracked?
Adding a file to .gitignore does not remove it from tracking if it was previously committed. Run: git rm --cached <file> to stop tracking it without deleting the file locally.
Why combine Django and Python?
Django projects need two layers of coverage: Python language artifacts (__pycache__, .pyc files, virtual environments) and Django-specific files (local_settings.py, SQLite databases, collected static files, uploaded media).

Looking for something else? Browse all templates →