summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2015-12-24 09:47:45 -0500
committerTim Graham <timograham@gmail.com>2015-12-30 17:51:11 -0500
commit406acd66e349238e5e8d2cd15473019e82c0cadb (patch)
treeff0683b45eb965474cff939e5d303ff452338c6e /docs
parent8202ce45a5ae5dac2c6fdf94bf3554180bbdd7b7 (diff)
[1.9.x] Fixed #25748 -- Added clarification on projects vs. applications.
Thanks Thomas Güttler for motivating this addition. Backport of e0519301238b43633bab64054772f9a62634a05f from master
Diffstat (limited to 'docs')
-rw-r--r--docs/ref/applications.txt22
1 files changed, 15 insertions, 7 deletions
diff --git a/docs/ref/applications.txt b/docs/ref/applications.txt
index 4184398fbb..9cecb8283b 100644
--- a/docs/ref/applications.txt
+++ b/docs/ref/applications.txt
@@ -18,15 +18,19 @@ This registry is simply called :attr:`~django.apps.apps` and it's available in
Projects and applications
=========================
-Django has historically used the term **project** to describe an installation
-of Django. A project is defined primarily by a settings module.
+The term **project** describes a Django web application. The project Python
+package is defined primarily by a settings module, but it usually contains
+other things. For example, when you run ``django-admin startproject mysite``
+you'll get a ``mysite`` project directory that contains a ``mysite`` Python
+package with ``settings.py``, ``urls.py``, and ``wsgi.py``. The project package
+is often extended to include things like fixtures, CSS, and templates which
+aren't tied to a particular application.
The term **application** describes a Python package that provides some set of
-features. Applications may be reused in various projects.
-
-.. note::
- This terminology is somewhat confusing these days as it became common to
- use the phrase "web app" to describe what equates to a Django project.
+features. Applications :doc:`may be reused </intro/reusable-apps/>` in various
+projects. A project's root directory (the one that contains ``manage.py``) is
+usually the container for all of a project's applications which aren't
+installed separately.
Applications include some combination of models, views, templates, template
tags, static files, URLs, middleware, etc. They're generally wired into
@@ -41,6 +45,10 @@ interact with installed applications, mainly for configuration and also for
introspection. That's why the application registry maintains metadata in an
:class:`~django.apps.AppConfig` instance for each installed application.
+There's no restriction that a project package can't also be considered an
+application and have models, etc. (which would require adding it to
+:setting:`INSTALLED_APPS`).
+
.. _configuring-applications-ref:
Configuring applications