diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-01-28 15:51:50 +0100 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-02-04 13:21:36 +0100 |
| commit | 3f1c7b70537330435e2ec2fca9550f7b7fa4372e (patch) | |
| tree | 82ab9395dd5380b61e1d2a4b7e49d4182b5a34f1 /docs/howto | |
| parent | 21ea58b8ccf95798271157876d59d46dcc745b0d (diff) | |
Simplified default project template.
Squashed commit of:
commit 508ec9144b35c50794708225b496bde1eb5e60aa
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 22:50:55 2013 +0100
Tweaked default settings file.
* Explained why BASE_DIR exists.
* Added a link to the database configuration options, and put it in its
own section.
* Moved sensitive settings that must be changed for production at the
top.
commit 6515fd2f1aa73a86dc8dbd2ccf512ddb6b140d57
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 14:35:21 2013 +0100
Documented the simplified app & project templates in the changelog.
commit 2c5b576c2ea91d84273a019b3d0b3b8b4da72f23
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 13:59:27 2013 +0100
Minor fixes in tutorials 5 and 6.
commit 55a51531be8104f21b3cca3f6bf70b0a7139a041
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 13:51:11 2013 +0100
Updated tutorial 2 for the new project template.
commit 29ddae87bdaecff12dd31b16b000c01efbde9e20
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 11:58:54 2013 +0100
Updated tutorial 1 for the new project template.
commit 0ecb9f6e2514cfd26a678a280d471433375101a3
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 11:29:13 2013 +0100
Adjusted the default URLconf detection to account for the admin.
It's now enabled by default.
commit 5fb4da0d3d09dac28dd94e3fde92b9d4335c0565
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 10:36:55 2013 +0100
Added security warnings for the most sensitive settings.
commit 718d84bd8ac4a42fb4b28ec93965de32680f091e
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 23:24:06 2013 +0100
Used an absolute path for the SQLite database.
This ensures the settings file works regardless of which directory
django-admin.py / manage.py is invoked from.
BASE_DIR got a +1 from a BDFL and another core dev. It doesn't involve
the concept of a "Django project"; it's just a convenient way to express
relative paths within the source code repository for non-Python files.
Thanks Jacob Kaplan-Moss for the suggestion.
commit 1b559b4bcda622e10909b68fe5cab90db6727dd9
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 23:22:40 2013 +0100
Removed STATIC_ROOT from the default settings template.
It isn't necessary in development, and it confuses beginners to no end.
Thanks Carl Meyer for the suggestion.
commit a55f141a500bb7c9a1bc259bbe1954c13b199671
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 23:21:43 2013 +0100
Removed MEDIA_ROOT/URL from default settings template.
Many sites will never deal with user-uploaded files, and MEDIA_ROOT is
complicated to explain.
Thanks Carl Meyer for the suggestion.
commit 44bf2f2441420fd9429ee9fe1f7207f92dd87e70
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 22:22:09 2013 +0100
Removed logging config.
This configuration is applied regardless of the value of LOGGING;
duplicating it in LOGGING is confusing.
commit eac747e848eaed65fd5f6f254f0a7559d856f88f
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 22:05:31 2013 +0100
Enabled the locale middleware by default.
USE_I18N is True by default, and doesn't work well without
LocaleMiddleware.
commit d806c62b2d00826dc2688c84b092627b8d571cab
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 22:03:16 2013 +0100
Enabled clickjacking protection by default.
commit 99152c30e6a15003f0b6737dc78e87adf462aacb
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 22:01:48 2013 +0100
Reorganized settings in logical sections, and trimmed comments.
commit d37ffdfcb24b7e0ec7cc113d07190f65fb12fb8a
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 16:54:11 2013 +0100
Avoided misleading TEMPLATE_DEBUG = DEBUG.
According to the docs TEMPLATE_DEBUG works only when DEBUG = True.
commit 15d9478d3a9850e85841e7cf09cf83050371c6bf
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 16:46:25 2013 +0100
Removed STATICFILES_FINDERS/TEMPLATE_LOADERS from default settings file.
Only developers with special needs ever need to change these settings.
commit 574da0eb5bfb4570883756914b4dbd7e20e1f61e
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 16:45:01 2013 +0100
Removed STATICFILES/TEMPLATES_DIRS from default settings file.
The current best practice is to put static files and templates in
applications, for easier testing and deployment.
commit 8cb18dbe56629aa1be74718a07e7cc66b4f9c9f0
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 16:24:16 2013 +0100
Removed settings related to email reporting from default settings file.
While handy for small scale projects, it isn't exactly a best practice.
commit 8ecbfcb3638058f0c49922540f874a7d802d864f
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 18:54:43 2013 +0100
Documented how to enable the sites framework.
commit 23fc91a6fa67d91ddd9d71b1c3e0dc26bdad9841
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 16:28:59 2013 +0100
Disabled the sites framework by default.
RequestSite does the job for single-domain websites.
commit c4d82eb8afc0eb8568bf9c4d12644272415e3960
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Tue Jan 29 00:08:33 2013 +0100
Added a default admin.py to the application template.
Thanks Ryan D Hiebert for the suggestion.
commit 4071dc771e5c44b1c5ebb9beecefb164ae465e22
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 10:59:49 2013 +0100
Enabled the admin by default.
Everyone uses the admin.
commit c807a31f8d89e7e7fd97380e3023f7983a8b6fcb
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 10:57:05 2013 +0100
Removed admindocs from default project template.
commit 09e4ce0e652a97da1a9e285046a91c8ad7a9189c
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 16:32:52 2013 +0100
Added links to the settings documentation.
commit 5b8f5eaef364eb790fcde6f9e86f7d266074cca8
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 11:06:54 2013 +0100
Used a significant example for URLconf includes.
commit 908e91d6fcee2a3cb51ca26ecdf12a6a24e69ef8
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 16:22:31 2013 +0100
Moved code comments about WSGI to docs, and rewrote said docs.
commit 50417e51996146f891d08ca8b74dcc736a581932
Author: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Mon Jan 28 15:51:50 2013 +0100
Normalized the default application template.
Removed the default test that 1 + 1 = 2, because it's been committed
way too many times, in too many projects.
Added an import of `render` for views, because the first view will
often be:
def home(request):
return render(request, "mysite/home.html")
Diffstat (limited to 'docs/howto')
| -rw-r--r-- | docs/howto/deployment/wsgi/index.txt | 99 | ||||
| -rw-r--r-- | docs/howto/error-reporting.txt | 4 |
2 files changed, 70 insertions, 33 deletions
diff --git a/docs/howto/deployment/wsgi/index.txt b/docs/howto/deployment/wsgi/index.txt index 91eda35cd7..738774462b 100644 --- a/docs/howto/deployment/wsgi/index.txt +++ b/docs/howto/deployment/wsgi/index.txt @@ -8,9 +8,10 @@ servers and applications. .. _WSGI: http://www.wsgi.org Django's :djadmin:`startproject` management command sets up a simple default -WSGI configuration for you, which you can tweak as needed for your project, and -direct any WSGI-compliant webserver to use. Django includes getting-started -documentation for the following WSGI servers: +WSGI configuration for you, which you can tweak as needed for your project, +and direct any WSGI-compliant application server to use. + +Django includes getting-started documentation for the following WSGI servers: .. toctree:: :maxdepth: 1 @@ -23,32 +24,76 @@ documentation for the following WSGI servers: The ``application`` object -------------------------- -One key concept of deploying with WSGI is to specify a central ``application`` -callable object which the webserver uses to communicate with your code. This is -commonly specified as an object named ``application`` in a Python module -accessible to the server. +The key concept of deploying with WSGI is the ``application`` callable which +the application server uses to communicate with your code. It's commonly +provided as an object named ``application`` in a Python module accessible to +the server. + +The :djadmin:`startproject` command creates a file +:file:`<project_name>/wsgi.py` that contains such an ``application`` callable. + +It's used both by Django's development server and in production WSGI +deployments. + +WSGI servers obtain the path to the ``application`` callable from their +configuration. Django's built-in servers, namely the :djadmin:`runserver` and +:djadmin:`runfcgi` commands, read it from the :setting:`WSGI_APPLICATION` +setting. By default, it's set to ``<project_name>.wsgi.application``, which +points to the ``application`` callable in :file:`<project_name>/wsgi.py`. + +Configuring the settings module +------------------------------- + +When the WSGI server loads your application, Django needs to import the +settings module — that's where your entire application is defined. + +Django uses the :envvar:`DJANGO_SETTINGS_MODULE` environment variable to +locate the appropriate settings module. It must contain the dotted path to the +settings module. You can use a different value for development and production; +it all depends on how you organize your settings. -The :djadmin:`startproject` command creates a :file:`projectname/wsgi.py` that -contains such an application callable. +If this variable isn't set, the default :file:`wsgi.py` sets it to +``mysite.settings``, where ``mysite`` is the name of your project. That's how +:djadmin:`runserver` discovers the default settings file by default. .. note:: - Upgrading from a previous release of Django and don't have a :file:`wsgi.py` - file in your project? You can simply add one to your project's top-level - Python package (probably next to :file:`settings.py` and :file:`urls.py`) - with the contents below. If you want :djadmin:`runserver` to also make use - of this WSGI file, you can also add ``WSGI_APPLICATION = - "mysite.wsgi.application"`` in your settings (replacing ``mysite`` with the - name of your project). + Since environment variables are process-wide, this doesn't work when you + run multiple Django sites in the same process. This happens with mod_wsgi. -Initially this file contains:: + To avoid this problem, use mod_wsgi's daemon mode with each site in its + own daemon process, or override the value from the environnemnt by + enforcing ``os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"`` in + your :file:`wsgi.py`. - import os +Applying WSGI middleware +------------------------ + +To apply `WSGI middleware`_ you can simply wrap the application object. For +istance you could add these lines at the bottom of :file:`wsgi.py`:: + + from helloworld.wsgi import HelloWorldApplication + application = HelloWorldApplication(application) + +You could also replace the Django WSGI application with a custom WSGI +application that later delegates to the Django WSGI application, if you want +to combine a Django application with a WSGI application of another framework. + +.. _`WSGI middleware`: http://www.python.org/dev/peps/pep-3333/#middleware-components-that-play-both-sides + +Upgrading from Django < 1.4 +--------------------------- + +If you're upgrading from Django 1.3.x or earlier, you don't have a +:file:`wsgi.py` file in your project. + +You can simply add one to your project's top-level Python package (probably +next to :file:`settings.py` and :file:`urls.py`) with the contents below:: + + import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") - # This application object is used by the development server - # as well as any WSGI server configured to use this file. from django.core.wsgi import get_wsgi_application application = get_wsgi_application() @@ -58,14 +103,6 @@ environment variable. You'll need to edit this line to replace ``mysite`` with the name of your project package, so the path to your settings module is correct. -To apply `WSGI middleware`_ you can simply wrap the application object -in the same file:: - - from helloworld.wsgi import HelloWorldApplication - application = HelloWorldApplication(application) - -You could also replace the Django WSGI application with a custom WSGI -application that later delegates to the Django WSGI application, if you want to -combine a Django application with a WSGI application of another framework. - -.. _`WSGI middleware`: http://www.python.org/dev/peps/pep-3333/#middleware-components-that-play-both-sides +Also add ``WSGI_APPLICATION = "mysite.wsgi.application"`` in your settings, so +that :djadmin:`runserver` finds your ``application`` callable. Don't forget to +replace ``mysite`` with the name of your project in this line. diff --git a/docs/howto/error-reporting.txt b/docs/howto/error-reporting.txt index 7f3c68c136..27f11f4936 100644 --- a/docs/howto/error-reporting.txt +++ b/docs/howto/error-reporting.txt @@ -39,8 +39,8 @@ By default, Django will send email from root@localhost. However, some mail providers reject all email from this address. To use a different sender address, modify the :setting:`SERVER_EMAIL` setting. -To disable this behavior, just remove all entries from the :setting:`ADMINS` -setting. +To activate this behavior, put the email addresses of the recipients in the +:setting:`ADMINS` setting. .. seealso:: |
