Django the popular web development framework for Python. It is based on Model View and Template referred as MVT.
Install Django as follows
pip install django
This article takes to the directory structure of whole Django framework and explains what each package and what each module is responsible for
If you want to explore the Django source code. Clone it as follows
git clone https://github.com/django/django.git
This Article is baed on Django version 4.1
The command tree will print the directory structure of Django.
Top level packages of Django are print using “tree -L 1”
. ├── __init__.py ├── __main__.py ├── apps ├── conf ├── contrib ├── core ├── db ├── dispatch ├── forms ├── http ├── middleware ├── shortcuts.py ├── template ├── templatetags ├── test ├── urls ├── utils └── views
As it is shown above, all top level packages are shown. Each of the top level packages of Django is explained as follows
Django Package | Description | Documentation |
---|---|---|
apps | Django contains installed apps registry. Installed application store configuration which can be available through django.apps | |
conf | Provides the way to access configuration | |
contrib | Django follows the python principle “Batteries included” philosophy such that it ships with extra application and tools helpful to solve common web development problems and provides boiler plate code and best practices | Django Contrib |
core | Core functionalities Like files, mail, serializers, cache and management commands etc | |
db | All database related stuff is here. Such as, backends, models and migrations etc | |
dispatch | ||
forms | Tools and libraries to build forms to accept input from users and also provides ways to process and respond to input received | Django Forms |
http | Provides the API to deal with request, response, multipart parsing and cookies | |
middleware | Django Middleware | |
template | API for Django Templating Language | |
templatetags | ||
test | Django Test Suite | |
urls | API to write Django URL’s (routes) | |
utils | API for utility functions | |
views | Main and important one. Django Views | |
shortcuts.py | Curated list of Classes and functions and aliases | |
__init__.py | __init__.py for django folder to be a package | |
__main__.py |
Directory structure of Django framework for packages and modules going one more level deep using command “tree -L 2”
Django Packages digging deep into level 2
. ├── apps ├── conf │ ├── app_template │ ├── project_template │ └── urls ├── contrib │ ├── admin │ ├── admindocs │ ├── auth │ ├── contenttypes │ ├── flatpages │ ├── gis │ ├── humanize │ ├── messages │ ├── postgres │ ├── redirects │ ├── sessions │ ├── sitemaps │ ├── sites │ ├── staticfiles │ └── syndication ├── core │ ├── cache │ ├── checks │ ├── files │ ├── handlers │ ├── mail │ ├── management │ ├── serializers │ └── servers ├── db │ ├── backends │ ├── migrations │ └── models ├── dispatch ├── forms │ ├── jinja2 │ └── templates ├── http ├── middleware ├── template │ ├── backends │ └── loaders ├── templatetags ├── test ├── urls ├── utils │ └── translation └── views ├── decorators ├── generic └── templates
Each Django Contrib app explained as follows
admin | Django Admin Interface that comes with Django |
admindocs | Provides the documentation for all INSTALLED_APPS for models, views, template tags and template filters |
auth | Django’s Authentication Framework |
contenttypes | A framework for hooking into different content types. Where each Django model is a separate content type |
flatpages | App to manage (flat) HTML content in database |
gis | Geospatial framework |
humanize | Django template filter. To use it add ‘django.contrib.humanize’ to INSTALL_APPS and then use {% load humanize %} |
messages | To store and retrieve temporary cookie or session based messages |
postgres | Offers PostgreSQL specific features |
redirects | A framework for mapping redirects |
sessions | Framework for storing session data in anonymous session |
sitemaps | Generate sitemap in XML to be used by search engines like Google, Bing, Yahoo |
sites | To operate multiple website from same database |
staticfiles | Collects all static files from each application installed into a single directory Command: django-admin collectstatic would collect static files into STATIC_ROOT directory |
syndication | Syndicate feed generator for generating RSS and Atom Feeds |
All packages and directories listed recursively is as follows
. ├── apps ├── conf │ ├── app_template │ │ └── migrations │ ├── project_template │ │ └── project_name │ └── urls ├── contrib │ ├── admin │ │ ├── migrations │ │ ├── static │ │ │ └── admin │ │ │ ├── css │ │ │ │ └── vendor │ │ │ │ └── select2 │ │ │ ├── img │ │ │ │ └── gis │ │ │ └── js │ │ │ ├── admin │ │ │ └── vendor │ │ │ ├── jquery │ │ │ ├── select2 │ │ │ │ └── i18n │ │ │ └── xregexp │ │ ├── templates │ │ │ ├── admin │ │ │ │ ├── auth │ │ │ │ │ └── user │ │ │ │ ├── edit_inline │ │ │ │ ├── includes │ │ │ │ └── widgets │ │ │ └── registration │ │ ├── templatetags │ │ └── views │ ├── admindocs │ │ └── templates │ │ └── admin_doc │ ├── auth │ │ ├── handlers │ │ ├── management │ │ │ └── commands │ │ ├── migrations │ │ └── templates │ │ ├── auth │ │ │ └── widgets │ │ └── registration │ ├── contenttypes │ │ ├── management │ │ │ └── commands │ │ └── migrations │ ├── flatpages │ │ ├── migrations │ │ └── templatetags │ ├── gis │ │ ├── admin │ │ ├── db │ │ │ ├── backends │ │ │ │ ├── base │ │ │ │ ├── mysql │ │ │ │ ├── oracle │ │ │ │ ├── postgis │ │ │ │ └── spatialite │ │ │ └── models │ │ │ └── sql │ │ ├── forms │ │ ├── gdal │ │ │ ├── prototypes │ │ │ └── raster │ │ ├── geoip2 │ │ ├── geos │ │ │ └── prototypes │ │ ├── management │ │ │ └── commands │ │ ├── serializers │ │ ├── sitemaps │ │ ├── static │ │ │ └── gis │ │ │ ├── css │ │ │ ├── img │ │ │ └── js │ │ ├── templates │ │ │ └── gis │ │ │ ├── admin │ │ │ └── kml │ │ └── utils │ ├── humanize │ │ └── templatetags │ ├── messages │ │ └── storage │ ├── postgres │ │ ├── aggregates │ │ ├── fields │ │ ├── forms │ │ ├── jinja2 │ │ │ └── postgres │ │ │ └── widgets │ │ └── templates │ │ └── postgres │ │ └── widgets │ ├── redirects │ │ └── migrations │ ├── sessions │ │ ├── backends │ │ ├── management │ │ │ └── commands │ │ └── migrations │ ├── sitemaps │ │ ├── management │ │ │ └── commands │ │ └── templates │ ├── sites │ │ └── migrations │ ├── staticfiles │ │ └── management │ │ └── commands │ └── syndication ├── core │ ├── cache │ │ └── backends │ ├── checks │ │ ├── compatibility │ │ └── security │ ├── files │ │ └── storage │ ├── handlers │ ├── mail │ │ └── backends │ ├── management │ │ └── commands │ ├── serializers │ └── servers ├── db │ ├── backends │ │ ├── base │ │ ├── dummy │ │ ├── mysql │ │ ├── oracle │ │ ├── postgresql │ │ └── sqlite3 │ ├── migrations │ │ └── operations │ └── models │ ├── fields │ ├── functions │ └── sql ├── dispatch ├── forms │ ├── jinja2 │ │ └── django │ │ └── forms │ │ ├── errors │ │ │ ├── dict │ │ │ └── list │ │ ├── formsets │ │ └── widgets │ └── templates │ └── django │ └── forms │ ├── errors │ │ ├── dict │ │ └── list │ ├── formsets │ └── widgets ├── http ├── middleware ├── template │ ├── backends │ └── loaders ├── templatetags ├── test ├── urls ├── utils │ └── translation └── views ├── decorators ├── generic └── templates
tree -L 2 -C -I "locale" -h -T 'Django Framework Directory Tree' -H .
Django Framework Directory Tree
.
├── __init__.py
├── __main__.py
├── apps
│ ├── __init__.py
│ ├── config.py
│ └── registry.py
├── conf
│ ├── __init__.py
│ ├── app_template
│ │ ├── __init__.py-tpl
│ │ ├── admin.py-tpl
│ │ ├── apps.py-tpl
│ │ ├── migrations
│ │ │ └── __init__.py-tpl
│ │ ├── models.py-tpl
│ │ ├── tests.py-tpl
│ │ └── views.py-tpl
│ ├── global_settings.py
│ ├── project_template
│ │ ├── manage.py-tpl
│ │ └── project_name
│ │ ├── __init__.py-tpl
│ │ ├── asgi.py-tpl
│ │ ├── settings.py-tpl
│ │ ├── urls.py-tpl
│ │ └── wsgi.py-tpl
│ └── urls
│ ├── __init__.py
│ ├── i18n.py
│ └── static.py
├── contrib
│ ├── __init__.py
│ ├── admin
│ │ ├── __init__.py
│ │ ├── actions.py
│ │ ├── apps.py
│ │ ├── checks.py
│ │ ├── decorators.py
│ │ ├── exceptions.py
│ │ ├── filters.py
│ │ ├── forms.py
│ │ ├── helpers.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_logentry_remove_auto_add.py
│ │ │ ├── 0003_logentry_add_action_flag_choices.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ ├── options.py
│ │ ├── sites.py
│ │ ├── static
│ │ │ └── admin
│ │ │ ├── css
│ │ │ │ ├── autocomplete.css
│ │ │ │ ├── base.css
│ │ │ │ ├── changelists.css
│ │ │ │ ├── dark_mode.css
│ │ │ │ ├── dashboard.css
│ │ │ │ ├── forms.css
│ │ │ │ ├── login.css
│ │ │ │ ├── nav_sidebar.css
│ │ │ │ ├── responsive.css
│ │ │ │ ├── responsive_rtl.css
│ │ │ │ ├── rtl.css
│ │ │ │ ├── vendor
│ │ │ │ │ └── select2
│ │ │ │ │ ├── LICENSE-SELECT2.md
│ │ │ │ │ ├── select2.css
│ │ │ │ │ └── select2.min.css
│ │ │ │ └── widgets.css
│ │ │ ├── img
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.txt
│ │ │ │ └── gis
│ │ │ └── js
│ │ │ ├── admin
│ │ │ └── vendor
│ │ │ ├── jquery
│ │ │ │ └── LICENSE.txt
│ │ │ ├── select2
│ │ │ │ ├── LICENSE.md
│ │ │ │ └── i18n
│ │ │ └── xregexp
│ │ │ └── LICENSE.txt
│ │ ├── templates
│ │ │ ├── admin
│ │ │ │ ├── auth
│ │ │ │ │ └── user
│ │ │ │ ├── edit_inline
│ │ │ │ ├── includes
│ │ │ │ └── widgets
│ │ │ └── registration
│ │ ├── templatetags
│ │ │ ├── __init__.py
│ │ │ ├── admin_list.py
│ │ │ ├── admin_modify.py
│ │ │ ├── admin_urls.py
│ │ │ ├── base.py
│ │ │ └── log.py
│ │ ├── tests.py
│ │ ├── utils.py
│ │ ├── views
│ │ │ ├── __init__.py
│ │ │ ├── autocomplete.py
│ │ │ ├── decorators.py
│ │ │ └── main.py
│ │ └── widgets.py
│ ├── admindocs
│ │ ├── __init__.py
│ │ ├── apps.py
│ │ ├── middleware.py
│ │ ├── templates
│ │ │ └── admin_doc
│ │ ├── urls.py
│ │ ├── utils.py
│ │ └── views.py
│ ├── auth
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── backends.py
│ │ ├── base_user.py
│ │ ├── checks.py
│ │ ├── common-passwords.txt.gz
│ │ ├── context_processors.py
│ │ ├── decorators.py
│ │ ├── forms.py
│ │ ├── handlers
│ │ │ ├── __init__.py
│ │ │ └── modwsgi.py
│ │ ├── hashers.py
│ │ ├── management
│ │ │ ├── __init__.py
│ │ │ └── commands
│ │ │ ├── __init__.py
│ │ │ ├── changepassword.py
│ │ │ └── createsuperuser.py
│ │ ├── middleware.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_alter_permission_name_max_length.py
│ │ │ ├── 0003_alter_user_email_max_length.py
│ │ │ ├── 0004_alter_user_username_opts.py
│ │ │ ├── 0005_alter_user_last_login_null.py
│ │ │ ├── 0006_require_contenttypes_0002.py
│ │ │ ├── 0007_alter_validators_add_error_messages.py
│ │ │ ├── 0008_alter_user_username_max_length.py
│ │ │ ├── 0009_alter_user_last_name_max_length.py
│ │ │ ├── 0010_alter_group_name_max_length.py
│ │ │ ├── 0011_update_proxy_permissions.py
│ │ │ ├── 0012_alter_user_first_name_max_length.py
│ │ │ └── __init__.py
│ │ ├── mixins.py
│ │ ├── models.py
│ │ ├── password_validation.py
│ │ ├── signals.py
│ │ ├── templates
│ │ │ ├── auth
│ │ │ │ └── widgets
│ │ │ └── registration
│ │ │ └── password_reset_subject.txt
│ │ ├── tokens.py
│ │ ├── urls.py
│ │ ├── validators.py
│ │ └── views.py
│ ├── contenttypes
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── checks.py
│ │ ├── fields.py
│ │ ├── forms.py
│ │ ├── management
│ │ │ ├── __init__.py
│ │ │ └── commands
│ │ │ ├── __init__.py
│ │ │ └── remove_stale_contenttypes.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_remove_content_type_name.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ └── views.py
│ ├── flatpages
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── forms.py
│ │ ├── middleware.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ ├── sitemaps.py
│ │ ├── templatetags
│ │ │ ├── __init__.py
│ │ │ └── flatpages.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── gis
│ │ ├── __init__.py
│ │ ├── admin
│ │ │ ├── __init__.py
│ │ │ ├── options.py
│ │ │ └── widgets.py
│ │ ├── apps.py
│ │ ├── db
│ │ │ ├── __init__.py
│ │ │ ├── backends
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── features.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ └── operations.py
│ │ │ │ ├── mysql
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── features.py
│ │ │ │ │ ├── introspection.py
│ │ │ │ │ ├── operations.py
│ │ │ │ │ └── schema.py
│ │ │ │ ├── oracle
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── features.py
│ │ │ │ │ ├── introspection.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ ├── operations.py
│ │ │ │ │ └── schema.py
│ │ │ │ ├── postgis
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── const.py
│ │ │ │ │ ├── features.py
│ │ │ │ │ ├── introspection.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ ├── operations.py
│ │ │ │ │ ├── pgraster.py
│ │ │ │ │ └── schema.py
│ │ │ │ ├── spatialite
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── client.py
│ │ │ │ │ ├── features.py
│ │ │ │ │ ├── introspection.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ ├── operations.py
│ │ │ │ │ └── schema.py
│ │ │ │ └── utils.py
│ │ │ └── models
│ │ │ ├── __init__.py
│ │ │ ├── aggregates.py
│ │ │ ├── fields.py
│ │ │ ├── functions.py
│ │ │ ├── lookups.py
│ │ │ ├── proxy.py
│ │ │ └── sql
│ │ │ ├── __init__.py
│ │ │ └── conversion.py
│ │ ├── feeds.py
│ │ ├── forms
│ │ │ ├── __init__.py
│ │ │ ├── fields.py
│ │ │ └── widgets.py
│ │ ├── gdal
│ │ │ ├── LICENSE
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── datasource.py
│ │ │ ├── driver.py
│ │ │ ├── envelope.py
│ │ │ ├── error.py
│ │ │ ├── feature.py
│ │ │ ├── field.py
│ │ │ ├── geometries.py
│ │ │ ├── geomtype.py
│ │ │ ├── layer.py
│ │ │ ├── libgdal.py
│ │ │ ├── prototypes
│ │ │ │ ├── __init__.py
│ │ │ │ ├── ds.py
│ │ │ │ ├── errcheck.py
│ │ │ │ ├── generation.py
│ │ │ │ ├── geom.py
│ │ │ │ ├── raster.py
│ │ │ │ └── srs.py
│ │ │ ├── raster
│ │ │ │ ├── __init__.py
│ │ │ │ ├── band.py
│ │ │ │ ├── base.py
│ │ │ │ ├── const.py
│ │ │ │ └── source.py
│ │ │ └── srs.py
│ │ ├── geoip2
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ └── resources.py
│ │ ├── geometry.py
│ │ ├── geos
│ │ │ ├── LICENSE
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── collections.py
│ │ │ ├── coordseq.py
│ │ │ ├── error.py
│ │ │ ├── factory.py
│ │ │ ├── geometry.py
│ │ │ ├── io.py
│ │ │ ├── libgeos.py
│ │ │ ├── linestring.py
│ │ │ ├── mutable_list.py
│ │ │ ├── point.py
│ │ │ ├── polygon.py
│ │ │ ├── prepared.py
│ │ │ └── prototypes
│ │ │ ├── __init__.py
│ │ │ ├── coordseq.py
│ │ │ ├── errcheck.py
│ │ │ ├── geom.py
│ │ │ ├── io.py
│ │ │ ├── misc.py
│ │ │ ├── predicates.py
│ │ │ ├── prepared.py
│ │ │ ├── threadsafe.py
│ │ │ └── topology.py
│ │ ├── management
│ │ │ ├── __init__.py
│ │ │ └── commands
│ │ │ ├── __init__.py
│ │ │ ├── inspectdb.py
│ │ │ └── ogrinspect.py
│ │ ├── measure.py
│ │ ├── ptr.py
│ │ ├── serializers
│ │ │ ├── __init__.py
│ │ │ └── geojson.py
│ │ ├── shortcuts.py
│ │ ├── sitemaps
│ │ │ ├── __init__.py
│ │ │ ├── kml.py
│ │ │ └── views.py
│ │ ├── static
│ │ │ └── gis
│ │ │ ├── css
│ │ │ │ └── ol3.css
│ │ │ ├── img
│ │ │ └── js
│ │ ├── templates
│ │ │ └── gis
│ │ │ ├── admin
│ │ │ └── kml
│ │ │ ├── base.kml
│ │ │ └── placemarks.kml
│ │ ├── utils
│ │ │ ├── __init__.py
│ │ │ ├── layermapping.py
│ │ │ ├── ogrinfo.py
│ │ │ ├── ogrinspect.py
│ │ │ └── srs.py
│ │ └── views.py
│ ├── humanize
│ │ ├── __init__.py
│ │ ├── apps.py
│ │ └── templatetags
│ │ ├── __init__.py
│ │ └── humanize.py
│ ├── messages
│ │ ├── __init__.py
│ │ ├── api.py
│ │ ├── apps.py
│ │ ├── constants.py
│ │ ├── context_processors.py
│ │ ├── middleware.py
│ │ ├── storage
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── cookie.py
│ │ │ ├── fallback.py
│ │ │ └── session.py
│ │ ├── utils.py
│ │ └── views.py
│ ├── postgres
│ │ ├── __init__.py
│ │ ├── aggregates
│ │ │ ├── __init__.py
│ │ │ ├── general.py
│ │ │ ├── mixins.py
│ │ │ └── statistics.py
│ │ ├── apps.py
│ │ ├── constraints.py
│ │ ├── expressions.py
│ │ ├── fields
│ │ │ ├── __init__.py
│ │ │ ├── array.py
│ │ │ ├── citext.py
│ │ │ ├── hstore.py
│ │ │ ├── jsonb.py
│ │ │ ├── ranges.py
│ │ │ └── utils.py
│ │ ├── forms
│ │ │ ├── __init__.py
│ │ │ ├── array.py
│ │ │ ├── hstore.py
│ │ │ └── ranges.py
│ │ ├── functions.py
│ │ ├── indexes.py
│ │ ├── jinja2
│ │ │ └── postgres
│ │ │ └── widgets
│ │ ├── lookups.py
│ │ ├── operations.py
│ │ ├── search.py
│ │ ├── serializers.py
│ │ ├── signals.py
│ │ ├── templates
│ │ │ └── postgres
│ │ │ └── widgets
│ │ ├── utils.py
│ │ └── validators.py
│ ├── redirects
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── middleware.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_alter_redirect_new_path_help_text.py
│ │ │ └── __init__.py
│ │ └── models.py
│ ├── sessions
│ │ ├── __init__.py
│ │ ├── apps.py
│ │ ├── backends
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── cache.py
│ │ │ ├── cached_db.py
│ │ │ ├── db.py
│ │ │ ├── file.py
│ │ │ └── signed_cookies.py
│ │ ├── base_session.py
│ │ ├── exceptions.py
│ │ ├── management
│ │ │ ├── __init__.py
│ │ │ └── commands
│ │ │ ├── __init__.py
│ │ │ └── clearsessions.py
│ │ ├── middleware.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ └── serializers.py
│ ├── sitemaps
│ │ ├── __init__.py
│ │ ├── apps.py
│ │ ├── management
│ │ │ ├── __init__.py
│ │ │ └── commands
│ │ │ ├── __init__.py
│ │ │ └── ping_google.py
│ │ ├── templates
│ │ │ ├── sitemap.xml
│ │ │ └── sitemap_index.xml
│ │ └── views.py
│ ├── sites
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── checks.py
│ │ ├── management.py
│ │ ├── managers.py
│ │ ├── middleware.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_alter_domain_unique.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ ├── requests.py
│ │ └── shortcuts.py
│ ├── staticfiles
│ │ ├── __init__.py
│ │ ├── apps.py
│ │ ├── checks.py
│ │ ├── finders.py
│ │ ├── handlers.py
│ │ ├── management
│ │ │ ├── __init__.py
│ │ │ └── commands
│ │ │ ├── __init__.py
│ │ │ ├── collectstatic.py
│ │ │ ├── findstatic.py
│ │ │ └── runserver.py
│ │ ├── storage.py
│ │ ├── testing.py
│ │ ├── urls.py
│ │ ├── utils.py
│ │ └── views.py
│ └── syndication
│ ├── __init__.py
│ ├── apps.py
│ └── views.py
├── core
│ ├── __init__.py
│ ├── asgi.py
│ ├── cache
│ │ ├── __init__.py
│ │ ├── backends
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── db.py
│ │ │ ├── dummy.py
│ │ │ ├── filebased.py
│ │ │ ├── locmem.py
│ │ │ ├── memcached.py
│ │ │ └── redis.py
│ │ └── utils.py
│ ├── checks
│ │ ├── __init__.py
│ │ ├── async_checks.py
│ │ ├── caches.py
│ │ ├── compatibility
│ │ │ ├── __init__.py
│ │ │ └── django_4_0.py
│ │ ├── database.py
│ │ ├── files.py
│ │ ├── messages.py
│ │ ├── model_checks.py
│ │ ├── registry.py
│ │ ├── security
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── csrf.py
│ │ │ └── sessions.py
│ │ ├── templates.py
│ │ ├── translation.py
│ │ └── urls.py
│ ├── exceptions.py
│ ├── files
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── images.py
│ │ ├── locks.py
│ │ ├── move.py
│ │ ├── storage
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── filesystem.py
│ │ │ └── mixins.py
│ │ ├── temp.py
│ │ ├── uploadedfile.py
│ │ ├── uploadhandler.py
│ │ └── utils.py
│ ├── handlers
│ │ ├── __init__.py
│ │ ├── asgi.py
│ │ ├── base.py
│ │ ├── exception.py
│ │ └── wsgi.py
│ ├── mail
│ │ ├── __init__.py
│ │ ├── backends
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── console.py
│ │ │ ├── dummy.py
│ │ │ ├── filebased.py
│ │ │ ├── locmem.py
│ │ │ └── smtp.py
│ │ ├── message.py
│ │ └── utils.py
│ ├── management
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── color.py
│ │ ├── commands
│ │ │ ├── __init__.py
│ │ │ ├── check.py
│ │ │ ├── compilemessages.py
│ │ │ ├── createcachetable.py
│ │ │ ├── dbshell.py
│ │ │ ├── diffsettings.py
│ │ │ ├── dumpdata.py
│ │ │ ├── flush.py
│ │ │ ├── inspectdb.py
│ │ │ ├── loaddata.py
│ │ │ ├── makemessages.py
│ │ │ ├── makemigrations.py
│ │ │ ├── migrate.py
│ │ │ ├── optimizemigration.py
│ │ │ ├── runserver.py
│ │ │ ├── sendtestemail.py
│ │ │ ├── shell.py
│ │ │ ├── showmigrations.py
│ │ │ ├── sqlflush.py
│ │ │ ├── sqlmigrate.py
│ │ │ ├── sqlsequencereset.py
│ │ │ ├── squashmigrations.py
│ │ │ ├── startapp.py
│ │ │ ├── startproject.py
│ │ │ ├── test.py
│ │ │ └── testserver.py
│ │ ├── sql.py
│ │ ├── templates.py
│ │ └── utils.py
│ ├── paginator.py
│ ├── serializers
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── json.py
│ │ ├── jsonl.py
│ │ ├── python.py
│ │ ├── pyyaml.py
│ │ └── xml_serializer.py
│ ├── servers
│ │ ├── __init__.py
│ │ └── basehttp.py
│ ├── signals.py
│ ├── signing.py
│ ├── validators.py
│ └── wsgi.py
├── db
│ ├── __init__.py
│ ├── backends
│ │ ├── __init__.py
│ │ ├── base
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── client.py
│ │ │ ├── creation.py
│ │ │ ├── features.py
│ │ │ ├── introspection.py
│ │ │ ├── operations.py
│ │ │ ├── schema.py
│ │ │ └── validation.py
│ │ ├── ddl_references.py
│ │ ├── dummy
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ └── features.py
│ │ ├── mysql
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── client.py
│ │ │ ├── compiler.py
│ │ │ ├── creation.py
│ │ │ ├── features.py
│ │ │ ├── introspection.py
│ │ │ ├── operations.py
│ │ │ ├── schema.py
│ │ │ └── validation.py
│ │ ├── oracle
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── client.py
│ │ │ ├── creation.py
│ │ │ ├── features.py
│ │ │ ├── functions.py
│ │ │ ├── introspection.py
│ │ │ ├── operations.py
│ │ │ ├── schema.py
│ │ │ ├── utils.py
│ │ │ └── validation.py
│ │ ├── postgresql
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── client.py
│ │ │ ├── creation.py
│ │ │ ├── features.py
│ │ │ ├── introspection.py
│ │ │ ├── operations.py
│ │ │ └── schema.py
│ │ ├── signals.py
│ │ ├── sqlite3
│ │ │ ├── __init__.py
│ │ │ ├── _functions.py
│ │ │ ├── base.py
│ │ │ ├── client.py
│ │ │ ├── creation.py
│ │ │ ├── features.py
│ │ │ ├── introspection.py
│ │ │ ├── operations.py
│ │ │ └── schema.py
│ │ └── utils.py
│ ├── migrations
│ │ ├── __init__.py
│ │ ├── autodetector.py
│ │ ├── exceptions.py
│ │ ├── executor.py
│ │ ├── graph.py
│ │ ├── loader.py
│ │ ├── migration.py
│ │ ├── operations
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── fields.py
│ │ │ ├── models.py
│ │ │ └── special.py
│ │ ├── optimizer.py
│ │ ├── questioner.py
│ │ ├── recorder.py
│ │ ├── serializer.py
│ │ ├── state.py
│ │ ├── utils.py
│ │ └── writer.py
│ ├── models
│ │ ├── __init__.py
│ │ ├── aggregates.py
│ │ ├── base.py
│ │ ├── constants.py
│ │ ├── constraints.py
│ │ ├── deletion.py
│ │ ├── enums.py
│ │ ├── expressions.py
│ │ ├── fields
│ │ │ ├── __init__.py
│ │ │ ├── files.py
│ │ │ ├── json.py
│ │ │ ├── mixins.py
│ │ │ ├── proxy.py
│ │ │ ├── related.py
│ │ │ ├── related_descriptors.py
│ │ │ ├── related_lookups.py
│ │ │ └── reverse_related.py
│ │ ├── functions
│ │ │ ├── __init__.py
│ │ │ ├── comparison.py
│ │ │ ├── datetime.py
│ │ │ ├── math.py
│ │ │ ├── mixins.py
│ │ │ ├── text.py
│ │ │ └── window.py
│ │ ├── indexes.py
│ │ ├── lookups.py
│ │ ├── manager.py
│ │ ├── options.py
│ │ ├── query.py
│ │ ├── query_utils.py
│ │ ├── signals.py
│ │ ├── sql
│ │ │ ├── __init__.py
│ │ │ ├── compiler.py
│ │ │ ├── constants.py
│ │ │ ├── datastructures.py
│ │ │ ├── query.py
│ │ │ ├── subqueries.py
│ │ │ └── where.py
│ │ └── utils.py
│ ├── transaction.py
│ └── utils.py
├── dispatch
│ ├── __init__.py
│ ├── dispatcher.py
│ └── license.txt
├── forms
│ ├── __init__.py
│ ├── boundfield.py
│ ├── fields.py
│ ├── forms.py
│ ├── formsets.py
│ ├── jinja2
│ │ └── django
│ │ └── forms
│ │ ├── errors
│ │ │ ├── dict
│ │ │ │ └── text.txt
│ │ │ └── list
│ │ │ └── text.txt
│ │ ├── formsets
│ │ └── widgets
│ ├── models.py
│ ├── renderers.py
│ ├── templates
│ │ └── django
│ │ └── forms
│ │ ├── errors
│ │ │ ├── dict
│ │ │ │ └── text.txt
│ │ │ └── list
│ │ │ └── text.txt
│ │ ├── formsets
│ │ └── widgets
│ ├── utils.py
│ └── widgets.py
├── http
│ ├── __init__.py
│ ├── cookie.py
│ ├── multipartparser.py
│ ├── request.py
│ └── response.py
├── middleware
│ ├── __init__.py
│ ├── cache.py
│ ├── clickjacking.py
│ ├── common.py
│ ├── csrf.py
│ ├── gzip.py
│ ├── http.py
│ ├── locale.py
│ └── security.py
├── shortcuts.py
├── template
│ ├── __init__.py
│ ├── autoreload.py
│ ├── backends
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── django.py
│ │ ├── dummy.py
│ │ ├── jinja2.py
│ │ └── utils.py
│ ├── base.py
│ ├── context.py
│ ├── context_processors.py
│ ├── defaultfilters.py
│ ├── defaulttags.py
│ ├── engine.py
│ ├── exceptions.py
│ ├── library.py
│ ├── loader.py
│ ├── loader_tags.py
│ ├── loaders
│ │ ├── __init__.py
│ │ ├── app_directories.py
│ │ ├── base.py
│ │ ├── cached.py
│ │ ├── filesystem.py
│ │ └── locmem.py
│ ├── response.py
│ ├── smartif.py
│ └── utils.py
├── templatetags
│ ├── __init__.py
│ ├── cache.py
│ ├── i18n.py
│ ├── l10n.py
│ ├── static.py
│ └── tz.py
├── test
│ ├── __init__.py
│ ├── client.py
│ ├── html.py
│ ├── runner.py
│ ├── selenium.py
│ ├── signals.py
│ ├── testcases.py
│ └── utils.py
├── urls
│ ├── __init__.py
│ ├── base.py
│ ├── conf.py
│ ├── converters.py
│ ├── exceptions.py
│ ├── resolvers.py
│ └── utils.py
├── utils
│ ├── __init__.py
│ ├── _os.py
│ ├── archive.py
│ ├── asyncio.py
│ ├── autoreload.py
│ ├── baseconv.py
│ ├── cache.py
│ ├── connection.py
│ ├── crypto.py
│ ├── datastructures.py
│ ├── dateformat.py
│ ├── dateparse.py
│ ├── dates.py
│ ├── datetime_safe.py
│ ├── deconstruct.py
│ ├── decorators.py
│ ├── deprecation.py
│ ├── duration.py
│ ├── encoding.py
│ ├── feedgenerator.py
│ ├── formats.py
│ ├── functional.py
│ ├── hashable.py
│ ├── html.py
│ ├── http.py
│ ├── inspect.py
│ ├── ipv6.py
│ ├── itercompat.py
│ ├── jslex.py
│ ├── log.py
│ ├── lorem_ipsum.py
│ ├── module_loading.py
│ ├── numberformat.py
│ ├── regex_helper.py
│ ├── safestring.py
│ ├── termcolors.py
│ ├── text.py
│ ├── timesince.py
│ ├── timezone.py
│ ├── topological_sort.py
│ ├── translation
│ │ ├── __init__.py
│ │ ├── reloader.py
│ │ ├── template.py
│ │ ├── trans_null.py
│ │ └── trans_real.py
│ ├── tree.py
│ ├── version.py
│ └── xmlutils.py
└── views
├── __init__.py
├── csrf.py
├── debug.py
├── decorators
│ ├── __init__.py
│ ├── cache.py
│ ├── clickjacking.py
│ ├── common.py
│ ├── csrf.py
│ ├── debug.py
│ ├── gzip.py
│ ├── http.py
│ └── vary.py
├── defaults.py
├── generic
│ ├── __init__.py
│ ├── base.py
│ ├── dates.py
│ ├── detail.py
│ ├── edit.py
│ └── list.py
├── i18n.py
├── static.py
└── templates
└── technical_500.txt
Tree command used to generate above directory tree for Django framework source code
tree -C -I "locale" -I "*.html" -I "*.js" -I "*.png" -I "*.svg" -H . --nolinks -T 'Django Framework Directory Tree'