2005-07-17 14:11:33 +08:00
|
|
|
=====================================
|
|
|
|
Writing your first Django app, part 1
|
|
|
|
=====================================
|
|
|
|
|
2005-07-16 12:55:40 +08:00
|
|
|
Let's learn by example.
|
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
Throughout this tutorial, we'll walk you through the creation of a basic
|
2006-05-06 11:31:26 +08:00
|
|
|
poll application.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
It'll consist of two parts:
|
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* A public site that lets people view polls and vote in them.
|
|
|
|
* An admin site that lets you add, change and delete polls.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2010-08-20 03:27:44 +08:00
|
|
|
We'll assume you have :doc:`Django installed </intro/install>` already. You can
|
2012-05-22 19:43:58 +08:00
|
|
|
tell Django is installed and which version by running the following command:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2013-12-26 03:54:14 +08:00
|
|
|
$ python -c "import django; print(django.get_version())"
|
2012-05-22 19:43:58 +08:00
|
|
|
|
2013-01-31 20:37:42 +08:00
|
|
|
If Django is installed, you should see the version of your installation. If it
|
|
|
|
isn't, you'll get an error telling "No module named django".
|
|
|
|
|
2013-12-31 01:15:49 +08:00
|
|
|
This tutorial is written for Django |version| and Python 3.2 or later. If the
|
|
|
|
Django version doesn't match, you can refer to the tutorial for your version
|
|
|
|
of Django by using the version switcher at the bottom right corner of this
|
|
|
|
page, or update Django to the newest version. If you are still using Python
|
|
|
|
2.7, you will need to adjust the code samples slightly, as described in
|
|
|
|
comments.
|
2012-05-22 19:43:58 +08:00
|
|
|
|
|
|
|
See :doc:`How to install Django </topics/install>` for advice on how to remove
|
|
|
|
older versions of Django and install a newer one.
|
2005-07-16 13:34:17 +08:00
|
|
|
|
2007-02-26 13:15:52 +08:00
|
|
|
.. admonition:: Where to get help:
|
|
|
|
|
|
|
|
If you're having trouble going through this tutorial, please post a message
|
2013-10-04 06:51:22 +08:00
|
|
|
to |django-users| or drop by `#django on irc.freenode.net`__ to chat
|
2008-06-16 12:03:25 +08:00
|
|
|
with other Django users who might be able to help.
|
2007-02-26 13:15:52 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
__ irc://irc.freenode.net/django
|
2007-02-26 13:16:52 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
Creating a project
|
|
|
|
==================
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
If this is your first time using Django, you'll have to take care of some
|
2008-08-24 06:25:40 +08:00
|
|
|
initial setup. Namely, you'll need to auto-generate some code that establishes a
|
|
|
|
Django :term:`project` -- a collection of settings for an instance of Django,
|
2006-05-02 09:31:56 +08:00
|
|
|
including database configuration, Django-specific options and
|
|
|
|
application-specific settings.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
From the command line, ``cd`` into a directory where you'd like to store your
|
2011-08-23 13:24:31 +08:00
|
|
|
code, then run the following command:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2013-12-26 03:54:14 +08:00
|
|
|
$ django-admin.py startproject mysite
|
2011-09-10 07:25:48 +08:00
|
|
|
|
2012-11-13 18:45:08 +08:00
|
|
|
This will create a ``mysite`` directory in your current directory. If it didn't
|
2012-12-15 22:25:54 +08:00
|
|
|
work, see :ref:`troubleshooting-django-admin-py`.
|
2007-09-15 05:48:50 +08:00
|
|
|
|
2007-02-27 04:51:21 +08:00
|
|
|
.. note::
|
2007-07-10 10:45:11 +08:00
|
|
|
|
2007-02-27 04:51:21 +08:00
|
|
|
You'll need to avoid naming projects after built-in Python or Django
|
|
|
|
components. In particular, this means you should avoid using names like
|
2008-08-24 06:25:40 +08:00
|
|
|
``django`` (which will conflict with Django itself) or ``test`` (which
|
2007-02-27 04:51:21 +08:00
|
|
|
conflicts with a built-in Python package).
|
|
|
|
|
2005-12-16 07:44:33 +08:00
|
|
|
.. admonition:: Where should this code live?
|
|
|
|
|
2012-12-13 21:20:47 +08:00
|
|
|
If your background is in plain old PHP (with no use of modern frameworks),
|
|
|
|
you're probably used to putting code under the Web server's document root
|
|
|
|
(in a place such as ``/var/www``). With Django, you don't do that. It's
|
|
|
|
not a good idea to put any of this Python code within your Web server's
|
|
|
|
document root, because it risks the possibility that people may be able
|
|
|
|
to view your code over the Web. That's not good for security.
|
2005-12-16 07:44:33 +08:00
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
Put your code in some directory **outside** of the document root, such as
|
2008-08-24 06:25:40 +08:00
|
|
|
:file:`/home/mycode`.
|
2005-12-16 07:44:33 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
Let's look at what :djadmin:`startproject` created::
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
mysite/
|
2006-01-11 10:06:27 +08:00
|
|
|
manage.py
|
2011-10-13 13:56:15 +08:00
|
|
|
mysite/
|
|
|
|
__init__.py
|
|
|
|
settings.py
|
|
|
|
urls.py
|
2011-10-22 12:30:10 +08:00
|
|
|
wsgi.py
|
2011-10-13 13:56:15 +08:00
|
|
|
|
|
|
|
.. admonition:: Doesn't match what you see?
|
|
|
|
|
|
|
|
The default project layout recently changed. If you're seeing a "flat"
|
|
|
|
layout (with no inner :file:`mysite/` directory), you're probably using
|
|
|
|
a version of Django that doesn't match this tutorial version. You'll
|
|
|
|
want to either switch to the older tutorial or the newer Django version.
|
2005-10-19 09:09:05 +08:00
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
These files are:
|
|
|
|
|
2013-07-07 09:24:38 +08:00
|
|
|
* The outer :file:`mysite/` root directory is just a container for your
|
2011-10-13 13:56:15 +08:00
|
|
|
project. Its name doesn't matter to Django; you can rename it to anything
|
|
|
|
you like.
|
|
|
|
|
|
|
|
* :file:`manage.py`: A command-line utility that lets you interact with this
|
|
|
|
Django project in various ways. You can read all the details about
|
|
|
|
:file:`manage.py` in :doc:`/ref/django-admin`.
|
2009-06-18 21:32:12 +08:00
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
* The inner :file:`mysite/` directory is the actual Python package for your
|
|
|
|
project. Its name is the Python package name you'll need to use to import
|
2013-07-07 09:24:38 +08:00
|
|
|
anything inside it (e.g. ``mysite.urls``).
|
2009-06-18 21:32:12 +08:00
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
* :file:`mysite/__init__.py`: An empty file that tells Python that this
|
|
|
|
directory should be considered a Python package. (Read `more about
|
|
|
|
packages`_ in the official Python docs if you're a Python beginner.)
|
2009-06-18 21:32:12 +08:00
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
* :file:`mysite/settings.py`: Settings/configuration for this Django
|
|
|
|
project. :doc:`/topics/settings` will tell you all about how settings
|
|
|
|
work.
|
|
|
|
|
|
|
|
* :file:`mysite/urls.py`: The URL declarations for this Django project; a
|
|
|
|
"table of contents" of your Django-powered site. You can read more about
|
|
|
|
URLs in :doc:`/topics/http/urls`.
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2013-04-30 01:40:03 +08:00
|
|
|
* :file:`mysite/wsgi.py`: An entry-point for WSGI-compatible web servers to
|
2011-10-22 12:30:10 +08:00
|
|
|
serve your project. See :doc:`/howto/deployment/wsgi/index` for more details.
|
|
|
|
|
2009-12-26 14:37:26 +08:00
|
|
|
.. _more about packages: http://docs.python.org/tutorial/modules.html#packages
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
The development server
|
|
|
|
----------------------
|
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
Let's verify this worked. Change into the outer :file:`mysite` directory, if
|
2013-12-26 03:54:14 +08:00
|
|
|
you haven't already, and run the command:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ python manage.py runserver
|
|
|
|
|
|
|
|
You'll see the following output on the command line:
|
2013-01-09 04:58:11 +08:00
|
|
|
|
|
|
|
.. parsed-literal::
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2014-01-20 10:45:21 +08:00
|
|
|
Performing system checks...
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2013-01-07 05:56:13 +08:00
|
|
|
0 errors found
|
2013-01-09 04:58:11 +08:00
|
|
|
|today| - 15:50:53
|
|
|
|
Django version |version|, using settings 'mysite.settings'
|
2013-02-02 05:25:29 +08:00
|
|
|
Starting development server at http://127.0.0.1:8000/
|
2008-09-02 11:40:42 +08:00
|
|
|
Quit the server with CONTROL-C.
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2006-05-06 11:31:26 +08:00
|
|
|
You've started the Django development server, a lightweight Web server written
|
|
|
|
purely in Python. We've included this with Django so you can develop things
|
|
|
|
rapidly, without having to deal with configuring a production server -- such as
|
2006-05-02 09:31:56 +08:00
|
|
|
Apache -- until you're ready for production.
|
|
|
|
|
2013-12-31 01:15:49 +08:00
|
|
|
Now's a good time to note: **don't** use this server in anything resembling a
|
2006-05-06 11:31:26 +08:00
|
|
|
production environment. It's intended only for use while developing. (We're in
|
|
|
|
the business of making Web frameworks, not Web servers.)
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
Now that the server's running, visit http://127.0.0.1:8000/ with your Web
|
|
|
|
browser. You'll see a "Welcome to Django" page, in pleasant, light-blue pastel.
|
|
|
|
It worked!
|
2006-01-11 10:06:27 +08:00
|
|
|
|
|
|
|
.. admonition:: Changing the port
|
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
By default, the :djadmin:`runserver` command starts the development server
|
2009-06-18 21:32:12 +08:00
|
|
|
on the internal IP at port 8000.
|
|
|
|
|
Fixed a whole bunch of small docs typos, errors, and ommissions.
Fixes #8358, #8396, #8724, #9043, #9128, #9247, #9267, #9267, #9375, #9409, #9414, #9416, #9446, #9454, #9464, #9503, #9518, #9533, #9657, #9658, #9683, #9733, #9771, #9835, #9836, #9837, #9897, #9906, #9912, #9945, #9986, #9992, #10055, #10084, #10091, #10145, #10245, #10257, #10309, #10358, #10359, #10424, #10426, #10508, #10531, #10551, #10635, #10637, #10656, #10658, #10690, #10699, #19528.
Thanks to all the respective authors of those tickets.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10371 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-04-04 02:30:54 +08:00
|
|
|
If you want to change the server's port, pass
|
|
|
|
it as a command-line argument. For instance, this command starts the server
|
|
|
|
on port 8080:
|
2009-06-18 21:32:12 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
.. code-block:: bash
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2013-09-18 22:35:41 +08:00
|
|
|
$ python manage.py runserver 8080
|
2009-06-18 21:32:12 +08:00
|
|
|
|
Fixed a whole bunch of small docs typos, errors, and ommissions.
Fixes #8358, #8396, #8724, #9043, #9128, #9247, #9267, #9267, #9375, #9409, #9414, #9416, #9446, #9454, #9464, #9503, #9518, #9533, #9657, #9658, #9683, #9733, #9771, #9835, #9836, #9837, #9897, #9906, #9912, #9945, #9986, #9992, #10055, #10084, #10091, #10145, #10245, #10257, #10309, #10358, #10359, #10424, #10426, #10508, #10531, #10551, #10635, #10637, #10656, #10658, #10690, #10699, #19528.
Thanks to all the respective authors of those tickets.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10371 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-04-04 02:30:54 +08:00
|
|
|
If you want to change the server's IP, pass it along with the port. So to
|
|
|
|
listen on all public IPs (useful if you want to show off your work on other
|
|
|
|
computers), use:
|
2009-06-18 21:32:12 +08:00
|
|
|
|
Fixed a whole bunch of small docs typos, errors, and ommissions.
Fixes #8358, #8396, #8724, #9043, #9128, #9247, #9267, #9267, #9375, #9409, #9414, #9416, #9446, #9454, #9464, #9503, #9518, #9533, #9657, #9658, #9683, #9733, #9771, #9835, #9836, #9837, #9897, #9906, #9912, #9945, #9986, #9992, #10055, #10084, #10091, #10145, #10245, #10257, #10309, #10358, #10359, #10424, #10426, #10508, #10531, #10551, #10635, #10637, #10656, #10658, #10690, #10699, #19528.
Thanks to all the respective authors of those tickets.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10371 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-04-04 02:30:54 +08:00
|
|
|
.. code-block:: bash
|
2009-06-18 21:32:12 +08:00
|
|
|
|
2013-09-18 22:35:41 +08:00
|
|
|
$ python manage.py runserver 0.0.0.0:8000
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
Full docs for the development server can be found in the
|
|
|
|
:djadmin:`runserver` reference.
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2013-10-14 20:19:02 +08:00
|
|
|
.. admonition:: Automatic reloading of :djadmin:`runserver`
|
|
|
|
|
|
|
|
The development server automatically reloads Python code for each request
|
|
|
|
as needed. You don't need to restart the server for code changes to take
|
2013-12-31 01:15:49 +08:00
|
|
|
effect. However, some actions like adding files don't trigger a restart,
|
|
|
|
so you'll have to restart the server in these cases.
|
2013-10-14 20:19:02 +08:00
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
Database setup
|
|
|
|
--------------
|
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
Now, edit :file:`mysite/settings.py`. It's a normal Python module with
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
module-level variables representing Django settings.
|
|
|
|
|
|
|
|
By default, the configuration uses SQLite. If you're new to databases, or
|
|
|
|
you're just interested in trying Django, this is the easiest choice. SQLite is
|
|
|
|
included in Python, so you won't need to install anything else to support your
|
|
|
|
database.
|
|
|
|
|
|
|
|
If you wish to use another database, install the appropriate :ref:`database
|
|
|
|
bindings <database-installation>`, and change the following keys in the
|
|
|
|
:setting:`DATABASES` ``'default'`` item to match your database connection
|
|
|
|
settings:
|
2009-12-22 23:18:51 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* :setting:`ENGINE <DATABASE-ENGINE>` -- Either
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
``'django.db.backends.sqlite3'``,
|
2011-10-14 08:12:01 +08:00
|
|
|
``'django.db.backends.postgresql_psycopg2'``,
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
``'django.db.backends.mysql'``, or
|
2013-12-31 01:15:49 +08:00
|
|
|
``'django.db.backends.oracle'``. Other backends are :ref:`also available
|
|
|
|
<third-party-notes>`.
|
2009-12-22 23:18:51 +08:00
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
* :setting:`NAME` -- The name of your database. If you're using SQLite, the
|
|
|
|
database will be a file on your computer; in that case, :setting:`NAME`
|
2013-02-11 07:07:50 +08:00
|
|
|
should be the full absolute path, including filename, of that file. The
|
|
|
|
default value, ``os.path.join(BASE_DIR, 'db.sqlite3')``, will store the file
|
|
|
|
in your project directory.
|
2008-08-24 06:25:40 +08:00
|
|
|
|
2013-02-11 07:07:50 +08:00
|
|
|
If you are not using SQLite as your database, additional settings such as :setting:`USER`, :setting:`PASSWORD`, :setting:`HOST` must be added.
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
For more details, see the reference documentation for :setting:`DATABASES`.
|
2007-03-29 19:05:44 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
.. note::
|
2005-07-22 11:15:43 +08:00
|
|
|
|
2006-05-06 11:31:26 +08:00
|
|
|
If you're using PostgreSQL or MySQL, make sure you've created a database by
|
|
|
|
this point. Do that with "``CREATE DATABASE database_name;``" within your
|
2005-07-22 11:15:43 +08:00
|
|
|
database's interactive prompt.
|
|
|
|
|
2008-07-13 20:16:11 +08:00
|
|
|
If you're using SQLite, you don't need to create anything beforehand - the
|
|
|
|
database file will be created automatically when it is needed.
|
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
While you're editing :file:`mysite/settings.py`, set :setting:`TIME_ZONE` to
|
|
|
|
your time zone.
|
2012-02-27 05:17:58 +08:00
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
Also, note the :setting:`INSTALLED_APPS` setting at the top of the file. That
|
|
|
|
holds the names of all Django applications that are activated in this Django
|
|
|
|
instance. Apps can be used in multiple projects, and you can package and
|
|
|
|
distribute them for use by others in their projects.
|
2008-08-24 06:25:40 +08:00
|
|
|
|
|
|
|
By default, :setting:`INSTALLED_APPS` contains the following apps, all of which
|
|
|
|
come with Django:
|
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
* :mod:`django.contrib.admin` -- The admin site. You'll use it in :doc:`part 2
|
|
|
|
of this tutorial </intro/tutorial02>`.
|
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* :mod:`django.contrib.auth` -- An authentication system.
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* :mod:`django.contrib.contenttypes` -- A framework for content types.
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* :mod:`django.contrib.sessions` -- A session framework.
|
2008-08-24 06:25:40 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* :mod:`django.contrib.messages` -- A messaging framework.
|
2010-12-11 23:04:25 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* :mod:`django.contrib.staticfiles` -- A framework for managing
|
|
|
|
static files.
|
2010-12-11 23:04:25 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
These applications are included by default as a convenience for the common case.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-04-20 17:30:00 +08:00
|
|
|
Some of these applications makes use of at least one database table, though,
|
2006-05-02 09:31:56 +08:00
|
|
|
so we need to create the tables in the database before we can use them. To do
|
2008-08-24 06:25:40 +08:00
|
|
|
that, run the following command:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
2005-07-17 23:23:34 +08:00
|
|
|
|
2013-11-21 22:04:31 +08:00
|
|
|
$ python manage.py migrate
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2013-11-21 22:04:31 +08:00
|
|
|
The :djadmin:`migrate` command looks at the :setting:`INSTALLED_APPS` setting
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
and creates any necessary database tables according to the database settings
|
2013-11-28 00:29:49 +08:00
|
|
|
in your :file:`mysite/settings.py` file and the database migrations shipped
|
|
|
|
with the app (we'll cover those later). You'll see a message for each
|
|
|
|
migration it applies, and you'll get a prompt asking you if you'd like to
|
2014-02-26 04:47:59 +08:00
|
|
|
create a superuser account for the authentication system.
|
2005-07-17 23:23:34 +08:00
|
|
|
|
2014-02-26 04:47:59 +08:00
|
|
|
First, you'll be asked if you would like to create a superuser. Type the word
|
|
|
|
``yes`` and hit enter.
|
|
|
|
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
You have installed Django's auth system, and don't have any superusers defined.
|
|
|
|
Would you like to create one now? (yes/no): yes
|
|
|
|
|
|
|
|
Next, enter a username. By default, this will be your system username. Enter
|
|
|
|
your desired username and press enter.
|
|
|
|
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
Username (leave blank to use 'your_username'): admin
|
|
|
|
|
|
|
|
You will then be prompted for your desired email address:
|
|
|
|
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
Email address: admin@example.com
|
|
|
|
|
|
|
|
The final step is to enter your password. You will be asked to enter your
|
|
|
|
password twice, the second time as a confirmation of the first.
|
|
|
|
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
Password: **********
|
|
|
|
Password (again): *********
|
|
|
|
Superuser created successfully.
|
|
|
|
|
|
|
|
With that done, if you're interested, run the command-line client for your
|
|
|
|
database and type ``\dt`` (PostgreSQL), ``SHOW TABLES;`` (MySQL), or
|
|
|
|
``.schema`` (SQLite) to display the tables Django created.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
.. admonition:: For the minimalists
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
Like we said above, the default applications are included for the common
|
|
|
|
case, but not everybody needs them. If you don't need any or all of them,
|
|
|
|
feel free to comment-out or delete the appropriate line(s) from
|
2013-11-21 22:04:31 +08:00
|
|
|
:setting:`INSTALLED_APPS` before running :djadmin:`migrate`. The
|
2013-11-28 00:29:49 +08:00
|
|
|
:djadmin:`migrate` command will only run migrations for apps in
|
2008-08-24 06:25:40 +08:00
|
|
|
:setting:`INSTALLED_APPS`.
|
|
|
|
|
|
|
|
.. _creating-models:
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
Creating models
|
|
|
|
===============
|
|
|
|
|
2005-08-12 00:01:09 +08:00
|
|
|
Now that your environment -- a "project" -- is set up, you're set to start
|
2006-05-02 09:31:56 +08:00
|
|
|
doing work.
|
2005-08-12 00:01:09 +08:00
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
Each application you write in Django consists of a Python package that follows
|
|
|
|
a certain convention. Django comes with a utility that automatically generates
|
|
|
|
the basic directory structure of an app, so you can focus on writing code
|
|
|
|
rather than creating directories.
|
2005-08-12 00:01:09 +08:00
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
.. admonition:: Projects vs. apps
|
|
|
|
|
|
|
|
What's the difference between a project and an app? An app is a Web
|
2010-10-09 16:12:50 +08:00
|
|
|
application that does something -- e.g., a Weblog system, a database of
|
2006-01-11 10:06:27 +08:00
|
|
|
public records or a simple poll app. A project is a collection of
|
|
|
|
configuration and apps for a particular Web site. A project can contain
|
|
|
|
multiple apps. An app can be in multiple projects.
|
2005-08-12 00:01:09 +08:00
|
|
|
|
2010-11-09 05:52:32 +08:00
|
|
|
Your apps can live anywhere on your `Python path`_. In this tutorial, we'll
|
2011-10-13 13:56:15 +08:00
|
|
|
create our poll app right next to your :file:`manage.py` file so that it can be
|
|
|
|
imported as its own top-level module, rather than a submodule of ``mysite``.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
To create your app, make sure you're in the same directory as :file:`manage.py`
|
|
|
|
and type this command:
|
2008-08-24 06:25:40 +08:00
|
|
|
|
|
|
|
.. code-block:: bash
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-18 22:35:41 +08:00
|
|
|
$ python manage.py startapp polls
|
2005-07-21 01:42:36 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
That'll create a directory :file:`polls`, which is laid out like this::
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
polls/
|
|
|
|
__init__.py
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
admin.py
|
2013-11-28 00:29:49 +08:00
|
|
|
migrations/
|
|
|
|
__init__.py
|
2006-05-02 09:31:56 +08:00
|
|
|
models.py
|
2009-10-14 21:38:31 +08:00
|
|
|
tests.py
|
2005-11-16 10:00:23 +08:00
|
|
|
views.py
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
This directory structure will house the poll application.
|
|
|
|
|
|
|
|
The first step in writing a database Web app in Django is to define your models
|
|
|
|
-- essentially, your database layout, with additional metadata.
|
|
|
|
|
2005-07-21 04:10:35 +08:00
|
|
|
.. admonition:: Philosophy
|
2005-07-27 00:11:43 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
A model is the single, definitive source of data about your data. It contains
|
|
|
|
the essential fields and behaviors of the data you're storing. Django follows
|
|
|
|
the :ref:`DRY Principle <dry>`. The goal is to define your data model in one
|
|
|
|
place and automatically derive things from it.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
This includes the migrations - unlike in Ruby On Rails, for example, migrations
|
|
|
|
are entirely derived from your models file, and are essentially just a
|
|
|
|
history that Django can roll through to update your database schema to
|
|
|
|
match your current models.
|
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
In our simple poll app, we'll create two models: ``Question`` and ``Choice``.
|
|
|
|
A ``Question`` has a question and a publication date. A ``Choice`` has two fields:
|
2012-05-26 03:13:51 +08:00
|
|
|
the text of the choice and a vote tally. Each ``Choice`` is associated with a
|
2013-09-07 02:57:00 +08:00
|
|
|
``Question``.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2005-08-12 00:01:09 +08:00
|
|
|
These concepts are represented by simple Python classes. Edit the
|
2013-09-24 06:23:47 +08:00
|
|
|
:file:`polls/models.py` file so it looks like this:
|
|
|
|
|
|
|
|
.. snippet::
|
|
|
|
:filename: polls/models.py
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
from django.db import models
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
|
|
|
|
class Question(models.Model):
|
|
|
|
question_text = models.CharField(max_length=200)
|
2006-05-02 09:31:56 +08:00
|
|
|
pub_date = models.DateTimeField('date published')
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
class Choice(models.Model):
|
2013-09-07 02:57:00 +08:00
|
|
|
question = models.ForeignKey(Question)
|
2012-05-26 03:13:51 +08:00
|
|
|
choice_text = models.CharField(max_length=200)
|
2013-02-07 18:51:25 +08:00
|
|
|
votes = models.IntegerField(default=0)
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
The code is straightforward. Each model is represented by a class that
|
2008-08-24 06:25:40 +08:00
|
|
|
subclasses :class:`django.db.models.Model`. Each model has a number of class
|
2005-08-30 04:33:14 +08:00
|
|
|
variables, each of which represents a database field in the model.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
Each field is represented by an instance of a :class:`~django.db.models.Field`
|
|
|
|
class -- e.g., :class:`~django.db.models.CharField` for character fields and
|
|
|
|
:class:`~django.db.models.DateTimeField` for datetimes. This tells Django what
|
|
|
|
type of data each field holds.
|
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
The name of each :class:`~django.db.models.Field` instance (e.g. ``question_text`` or
|
2013-03-23 06:01:47 +08:00
|
|
|
``pub_date``) is the field's name, in machine-friendly format. You'll use this
|
2008-08-24 06:25:40 +08:00
|
|
|
value in your Python code, and your database will use it as the column name.
|
|
|
|
|
|
|
|
You can use an optional first positional argument to a
|
|
|
|
:class:`~django.db.models.Field` to designate a human-readable name. That's used
|
|
|
|
in a couple of introspective parts of Django, and it doubles as documentation.
|
|
|
|
If this field isn't provided, Django will use the machine-readable name. In this
|
2013-09-07 02:57:00 +08:00
|
|
|
example, we've only defined a human-readable name for ``Question.pub_date``. For all
|
2008-08-24 06:25:40 +08:00
|
|
|
other fields in this model, the field's machine-readable name will suffice as
|
|
|
|
its human-readable name.
|
|
|
|
|
2013-02-07 18:51:25 +08:00
|
|
|
Some :class:`~django.db.models.Field` classes have required arguments.
|
2008-08-24 06:25:40 +08:00
|
|
|
:class:`~django.db.models.CharField`, for example, requires that you give it a
|
2013-01-01 21:12:42 +08:00
|
|
|
:attr:`~django.db.models.CharField.max_length`. That's used not only in the
|
|
|
|
database schema, but in validation, as we'll soon see.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-02-07 18:51:25 +08:00
|
|
|
A :class:`~django.db.models.Field` can also have various optional arguments; in
|
|
|
|
this case, we've set the :attr:`~django.db.models.Field.default` value of
|
|
|
|
``votes`` to 0.
|
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
Finally, note a relationship is defined, using
|
2012-05-26 03:13:51 +08:00
|
|
|
:class:`~django.db.models.ForeignKey`. That tells Django each ``Choice`` is related
|
2013-09-07 02:57:00 +08:00
|
|
|
to a single ``Question``. Django supports all the common database relationships:
|
2014-03-01 10:03:46 +08:00
|
|
|
many-to-one, many-to-many and one-to-one.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2009-12-26 14:37:26 +08:00
|
|
|
.. _`Python path`: http://docs.python.org/tutorial/modules.html#the-module-search-path
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
Activating models
|
|
|
|
=================
|
|
|
|
|
|
|
|
That small bit of model code gives Django a lot of information. With it, Django
|
|
|
|
is able to:
|
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* Create a database schema (``CREATE TABLE`` statements) for this app.
|
2013-09-07 02:57:00 +08:00
|
|
|
* Create a Python database-access API for accessing ``Question`` and ``Choice`` objects.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
But first we need to tell our project that the ``polls`` app is installed.
|
|
|
|
|
2005-07-21 04:12:29 +08:00
|
|
|
.. admonition:: Philosophy
|
2005-07-21 04:10:35 +08:00
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
Django apps are "pluggable": You can use an app in multiple projects, and
|
|
|
|
you can distribute apps, because they don't have to be tied to a given
|
|
|
|
Django installation.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
Edit the :file:`mysite/settings.py` file again, and change the
|
|
|
|
:setting:`INSTALLED_APPS` setting to include the string ``'polls'``. So it'll
|
2013-09-24 06:23:47 +08:00
|
|
|
look like this:
|
|
|
|
|
|
|
|
.. snippet::
|
|
|
|
:filename: mysite/settings.py
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
INSTALLED_APPS = (
|
2014-01-25 05:43:00 +08:00
|
|
|
'django.contrib.admin',
|
2006-05-02 09:31:56 +08:00
|
|
|
'django.contrib.auth',
|
|
|
|
'django.contrib.contenttypes',
|
|
|
|
'django.contrib.sessions',
|
2012-02-27 05:17:58 +08:00
|
|
|
'django.contrib.messages',
|
|
|
|
'django.contrib.staticfiles',
|
2012-01-02 19:19:06 +08:00
|
|
|
'polls',
|
2005-07-16 12:55:40 +08:00
|
|
|
)
|
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
Now Django knows to include the ``polls`` app. Let's run another command:
|
2008-08-24 06:25:40 +08:00
|
|
|
|
|
|
|
.. code-block:: bash
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
$ python manage.py makemigrations polls
|
|
|
|
|
|
|
|
You should see something similar to the following:
|
|
|
|
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
Migrations for 'polls':
|
|
|
|
0001_initial.py:
|
|
|
|
- Create model Question
|
|
|
|
- Create model Choice
|
|
|
|
|
|
|
|
By running ``makemigrations``, you're telling Django that you've made
|
|
|
|
some changes to your models (in this case, you've made new ones) and that
|
|
|
|
you'd like the changes to be stored as a *migration*.
|
|
|
|
|
|
|
|
Migrations are how Django stores changes to your models (and thus your
|
|
|
|
database schema) - they're just files on disk. You can read the migration
|
|
|
|
for your new model if you like; it's the file
|
|
|
|
``polls/migrations/0001_initial.py``. Don't worry, you're not expected to read
|
|
|
|
them every time Django makes one, but they're designed to be human-editable
|
|
|
|
in case you want to manually tweak how Django changes things.
|
|
|
|
|
|
|
|
There's a command that will run the migrations for you and manage your database
|
|
|
|
schema automatically - that's called :djadmin:`migrate`, and we'll come to it in a
|
|
|
|
moment - but first, let's see what SQL that migration would run. The
|
|
|
|
:djadmin:`sqlmigrate` command takes migration names and returns their SQL:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ python manage.py sqlmigrate polls 0001
|
2005-08-22 02:28:04 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
|
|
|
|
You should see something similar to the following (we've reformatted it for
|
|
|
|
readability):
|
2008-08-24 06:25:40 +08:00
|
|
|
|
|
|
|
.. code-block:: sql
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
CREATE TABLE polls_question (
|
|
|
|
"id" serial NOT NULL PRIMARY KEY,
|
2013-09-07 02:57:00 +08:00
|
|
|
"question_text" varchar(200) NOT NULL,
|
2013-11-28 00:29:49 +08:00
|
|
|
"pub_date" timestamp with time zone NOT NULL
|
2005-07-16 12:55:40 +08:00
|
|
|
);
|
2013-11-28 00:29:49 +08:00
|
|
|
|
|
|
|
CREATE TABLE polls_choice (
|
|
|
|
"id" serial NOT NULL PRIMARY KEY,
|
|
|
|
"question_id" integer NOT NULL,
|
2012-05-26 03:13:51 +08:00
|
|
|
"choice_text" varchar(200) NOT NULL,
|
2005-11-28 03:28:38 +08:00
|
|
|
"votes" integer NOT NULL
|
2005-07-16 12:55:40 +08:00
|
|
|
);
|
2013-11-28 00:29:49 +08:00
|
|
|
|
|
|
|
CREATE INDEX polls_choice_7aa0f6ee ON "polls_choice" ("question_id");
|
|
|
|
|
|
|
|
ALTER TABLE "polls_choice"
|
|
|
|
ADD CONSTRAINT polls_choice_question_id_246c99a640fbbd72_fk_polls_question_id
|
|
|
|
FOREIGN KEY ("question_id")
|
|
|
|
REFERENCES "polls_question" ("id")
|
|
|
|
DEFERRABLE INITIALLY DEFERRED;
|
|
|
|
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
Note the following:
|
|
|
|
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
* The exact output will vary depending on the database you are using. The
|
2013-11-28 00:29:49 +08:00
|
|
|
example above is generated for PostgreSQL.
|
2007-07-10 10:45:11 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* Table names are automatically generated by combining the name of the app
|
2013-09-07 02:57:00 +08:00
|
|
|
(``polls``) and the lowercase name of the model -- ``question`` and
|
2011-10-14 08:12:01 +08:00
|
|
|
``choice``. (You can override this behavior.)
|
2005-07-27 00:11:43 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* Primary keys (IDs) are added automatically. (You can override this, too.)
|
2005-07-27 00:11:43 +08:00
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* By convention, Django appends ``"_id"`` to the foreign key field name.
|
2012-02-27 05:17:58 +08:00
|
|
|
(Yes, you can override this, as well.)
|
2005-08-26 06:51:30 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
* The foreign key relationship is made explicit by a ``FOREIGN KEY``
|
|
|
|
constraint. Don't worry about the ``DEFERRABLE`` parts; that's just telling
|
|
|
|
PostgreSQL to not enforce the foreign key until the end of the transaction.
|
2005-07-27 00:11:43 +08:00
|
|
|
|
2013-09-17 16:05:45 +08:00
|
|
|
* It's tailored to the database you're using, so database-specific field types
|
|
|
|
such as ``auto_increment`` (MySQL), ``serial`` (PostgreSQL), or ``integer
|
|
|
|
primary key autoincrement`` (SQLite) are handled for you automatically. Same
|
2011-10-14 08:12:01 +08:00
|
|
|
goes for quoting of field names -- e.g., using double quotes or single
|
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")
2013-01-28 22:51:50 +08:00
|
|
|
quotes.
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
* The :djadmin:`sqlmigrate` command doesn't actually run the migration on your
|
|
|
|
database - it just prints it to the screen so that you can see what SQL
|
|
|
|
Django thinks is required. It's useful for checking what Django is going to
|
|
|
|
do or if you have database administrators who require SQL scripts for
|
|
|
|
changes.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
If you're interested, you can also run
|
2014-01-20 10:45:21 +08:00
|
|
|
:djadmin:`python manage.py check <check>`; this checks for any problems in
|
|
|
|
your project without making migrations or touching the database.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-11-21 22:04:31 +08:00
|
|
|
Now, run :djadmin:`migrate` again to create those model tables in your database:
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2008-08-24 06:25:40 +08:00
|
|
|
.. code-block:: bash
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-11-21 22:04:31 +08:00
|
|
|
$ python manage.py migrate
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-11-28 00:29:49 +08:00
|
|
|
Operations to perform:
|
|
|
|
Synchronize unmigrated apps: sessions, admin, messages, auth, staticfiles, contenttypes
|
|
|
|
Apply all migrations: polls
|
|
|
|
Synchronizing apps without migrations:
|
|
|
|
Creating tables...
|
|
|
|
Installing custom SQL...
|
|
|
|
Installing indexes...
|
|
|
|
Installed 0 object(s) from 0 fixture(s)
|
|
|
|
Running migrations:
|
|
|
|
Applying polls.0001_initial... OK
|
|
|
|
|
|
|
|
|
|
|
|
The :djadmin:`migrate` command takes all the migrations that haven't been
|
|
|
|
applied (Django tracks which ones are applied using a special table in your
|
|
|
|
database called ``django_migrations``) and runs them against your database -
|
2014-03-01 10:03:46 +08:00
|
|
|
essentially, synchronizing the changes you made to your models with the schema
|
2013-11-28 00:29:49 +08:00
|
|
|
in the database.
|
|
|
|
|
|
|
|
Migrations are very powerful and let you change your models over time, as you
|
|
|
|
develop your project, without the need to delete your database or tables and
|
2014-03-01 10:03:46 +08:00
|
|
|
make new ones - it specializes in upgrading your database live, without
|
2013-11-28 00:29:49 +08:00
|
|
|
losing data. We'll cover them in more depth in a later part of the tutorial,
|
|
|
|
but for now, remember the three-step guide to making model changes:
|
|
|
|
|
2013-12-26 03:54:14 +08:00
|
|
|
* Change your models (in ``models.py``).
|
|
|
|
* Run :djadmin:`python manage.py makemigrations <makemigrations>` to create
|
|
|
|
migrations for those changes
|
|
|
|
* Run :djadmin:`python manage.py migrate <migrate>` to apply those changes to
|
|
|
|
the database.
|
2013-11-28 00:29:49 +08:00
|
|
|
|
|
|
|
The reason there's separate commands to make and apply migrations is because
|
|
|
|
you'll commit migrations to your version control system and ship them with
|
|
|
|
your app; they not only make your development easier, they're also useable by
|
|
|
|
other developers and in production.
|
2005-08-11 04:38:00 +08:00
|
|
|
|
2010-08-20 03:27:44 +08:00
|
|
|
Read the :doc:`django-admin.py documentation </ref/django-admin>` for full
|
2008-08-24 06:25:40 +08:00
|
|
|
information on what the ``manage.py`` utility can do.
|
2005-08-11 04:38:00 +08:00
|
|
|
|
2005-07-16 12:55:40 +08:00
|
|
|
Playing with the API
|
|
|
|
====================
|
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
Now, let's hop into the interactive Python shell and play around with the free
|
2008-08-24 06:25:40 +08:00
|
|
|
API Django gives you. To invoke the Python shell, use this command:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2013-09-18 22:35:41 +08:00
|
|
|
$ python manage.py shell
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
We're using this instead of simply typing "python", because :file:`manage.py`
|
|
|
|
sets the ``DJANGO_SETTINGS_MODULE`` environment variable, which gives Django
|
2013-04-13 07:22:02 +08:00
|
|
|
the Python import path to your :file:`mysite/settings.py` file.
|
2006-01-11 10:06:27 +08:00
|
|
|
|
|
|
|
.. admonition:: Bypassing manage.py
|
|
|
|
|
2011-10-13 13:56:15 +08:00
|
|
|
If you'd rather not use :file:`manage.py`, no problem. Just set the
|
2013-12-30 22:42:15 +08:00
|
|
|
:envvar:`DJANGO_SETTINGS_MODULE` environment variable to
|
|
|
|
``mysite.settings``, start a plain Python shell, and set up Django::
|
|
|
|
|
|
|
|
>>> import django
|
|
|
|
>>> django.setup()
|
|
|
|
|
|
|
|
If this raises an :exc:`~exceptions.AttributeError`, you're probably using
|
|
|
|
a version of Django that doesn't match this tutorial version. You'll want
|
|
|
|
to either switch to the older tutorial or the newer Django version.
|
|
|
|
|
|
|
|
You must run ``python`` from the same directory :file:`manage.py` is in,
|
|
|
|
or ensure that directory is on the Python path, so that ``import mysite``
|
|
|
|
works.
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2010-08-20 03:27:44 +08:00
|
|
|
For more information on all of this, see the :doc:`django-admin.py
|
|
|
|
documentation </ref/django-admin>`.
|
2006-01-11 10:06:27 +08:00
|
|
|
|
2010-08-20 03:27:44 +08:00
|
|
|
Once you're in the shell, explore the :doc:`database API </topics/db/queries>`::
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> from polls.models import Question, Choice # Import the model classes we just wrote.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
# No questions are in the system yet.
|
|
|
|
>>> Question.objects.all()
|
2005-07-16 12:55:40 +08:00
|
|
|
[]
|
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
# Create a new Question.
|
2012-02-27 05:17:58 +08:00
|
|
|
# Support for time zones is enabled in the default settings file, so
|
|
|
|
# Django expects a datetime with tzinfo for pub_date. Use timezone.now()
|
|
|
|
# instead of datetime.datetime.now() and it will do the right thing.
|
|
|
|
>>> from django.utils import timezone
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
# Save the object into the database. You have to call save() explicitly.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.save()
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-01-11 10:06:27 +08:00
|
|
|
# Now it has an ID. Note that this might say "1L" instead of "1", depending
|
|
|
|
# on which database you're using. That's no biggie; it just means your
|
|
|
|
# database backend prefers to return integers as Python long integer
|
|
|
|
# objects.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.id
|
2005-07-16 12:55:40 +08:00
|
|
|
1
|
|
|
|
|
|
|
|
# Access database columns via Python attributes.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.question_text
|
2012-02-27 05:17:58 +08:00
|
|
|
"What's new?"
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.pub_date
|
2012-02-27 05:17:58 +08:00
|
|
|
datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
# Change values by changing the attributes, then calling save().
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.question_text = "What's up?"
|
|
|
|
>>> q.save()
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
# objects.all() displays all the questions in the database.
|
|
|
|
>>> Question.objects.all()
|
|
|
|
[<Question: Question object>]
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
Wait a minute. ``<Question: Question object>`` is, utterly, an unhelpful representation
|
|
|
|
of this object. Let's fix that by editing the ``Question`` model (in the
|
2008-08-24 06:25:40 +08:00
|
|
|
``polls/models.py`` file) and adding a
|
2013-12-31 01:15:49 +08:00
|
|
|
:meth:`~django.db.models.Model.__str__` method to both ``Question`` and
|
|
|
|
``Choice``:
|
2013-09-24 06:23:47 +08:00
|
|
|
|
|
|
|
.. snippet::
|
|
|
|
:filename: polls/models.py
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-05-18 19:34:29 +08:00
|
|
|
from django.db import models
|
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
class Question(models.Model):
|
2005-07-16 12:55:40 +08:00
|
|
|
# ...
|
2013-12-31 01:15:49 +08:00
|
|
|
def __str__(self): # __unicode__ on Python 2
|
2013-09-07 02:57:00 +08:00
|
|
|
return self.question_text
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
class Choice(models.Model):
|
2005-07-16 12:55:40 +08:00
|
|
|
# ...
|
2013-12-31 01:15:49 +08:00
|
|
|
def __str__(self): # __unicode__ on Python 2
|
2012-05-26 03:13:51 +08:00
|
|
|
return self.choice_text
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-12-31 01:15:49 +08:00
|
|
|
It's important to add :meth:`~django.db.models.Model.__str__` methods to your
|
|
|
|
models, not only for your own sanity when dealing with the interactive prompt,
|
|
|
|
but also because objects' representations are used throughout Django's
|
|
|
|
automatically-generated admin.
|
|
|
|
|
|
|
|
.. admonition:: ``__str__`` or ``__unicode__``?
|
|
|
|
|
|
|
|
On Python 3, it's easy, just use
|
|
|
|
:meth:`~django.db.models.Model.__str__`.
|
|
|
|
|
|
|
|
On Python 2, you should define :meth:`~django.db.models.Model.__unicode__`
|
|
|
|
methods returning ``unicode`` values instead. Django models have a default
|
|
|
|
:meth:`~django.db.models.Model.__str__` method that calls
|
|
|
|
:meth:`~django.db.models.Model.__unicode__` and converts the result to a
|
|
|
|
UTF-8 bytestring. This means that ``unicode(p)`` will return a Unicode
|
|
|
|
string, and ``str(p)`` will return a bytestring, with characters encoded
|
2013-12-31 06:59:18 +08:00
|
|
|
as UTF-8. Python does the opposite: ``object`` has a ``__unicode__``
|
2013-12-31 01:15:49 +08:00
|
|
|
method that calls ``__str__`` and interprets the result as an ASCII
|
|
|
|
bytestring. This difference can create confusion.
|
|
|
|
|
|
|
|
If all of this is gibberish to you, just use Python 3.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
Note these are normal Python methods. Let's add a custom method, just for
|
2013-09-24 06:23:47 +08:00
|
|
|
demonstration:
|
|
|
|
|
|
|
|
.. snippet::
|
|
|
|
:filename: polls/models.py
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2006-05-02 09:31:56 +08:00
|
|
|
import datetime
|
2012-02-27 05:17:58 +08:00
|
|
|
from django.utils import timezone
|
2006-05-02 09:31:56 +08:00
|
|
|
# ...
|
2013-09-07 02:57:00 +08:00
|
|
|
class Question(models.Model):
|
2005-07-16 12:55:40 +08:00
|
|
|
# ...
|
2012-02-27 05:17:58 +08:00
|
|
|
def was_published_recently(self):
|
|
|
|
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2012-02-27 05:17:58 +08:00
|
|
|
Note the addition of ``import datetime`` and ``from django.utils import
|
|
|
|
timezone``, to reference Python's standard :mod:`datetime` module and Django's
|
2012-03-03 01:16:52 +08:00
|
|
|
time-zone-related utilities in :mod:`django.utils.timezone`, respectively. If
|
2012-02-27 05:17:58 +08:00
|
|
|
you aren't familiar with time zone handling in Python, you can learn more in
|
|
|
|
the :doc:`time zone support docs </topics/i18n/timezones>`.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2009-04-01 00:45:41 +08:00
|
|
|
Save these changes and start a new Python interactive shell by running
|
2006-01-11 10:06:27 +08:00
|
|
|
``python manage.py shell`` again::
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> from polls.models import Question, Choice
|
2006-05-02 09:31:56 +08:00
|
|
|
|
2014-02-09 19:38:13 +08:00
|
|
|
# Make sure our __str__() addition worked.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> Question.objects.all()
|
|
|
|
[<Question: What's up?>]
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
# Django provides a rich database lookup API that's entirely driven by
|
|
|
|
# keyword arguments.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> Question.objects.filter(id=1)
|
|
|
|
[<Question: What's up?>]
|
|
|
|
>>> Question.objects.filter(question_text__startswith='What')
|
|
|
|
[<Question: What's up?>]
|
2006-01-15 08:37:59 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
# Get the question that was published this year.
|
2013-01-09 04:43:35 +08:00
|
|
|
>>> from django.utils import timezone
|
|
|
|
>>> current_year = timezone.now().year
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> Question.objects.get(pub_date__year=current_year)
|
|
|
|
<Question: What's up?>
|
2006-01-15 08:37:59 +08:00
|
|
|
|
2012-11-13 18:45:08 +08:00
|
|
|
# Request an ID that doesn't exist, this will raise an exception.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> Question.objects.get(id=2)
|
2005-07-16 12:55:40 +08:00
|
|
|
Traceback (most recent call last):
|
|
|
|
...
|
2014-04-16 20:35:17 +08:00
|
|
|
DoesNotExist: Question matching query does not exist.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2005-07-27 00:11:43 +08:00
|
|
|
# Lookup by a primary key is the most common case, so Django provides a
|
|
|
|
# shortcut for primary-key exact lookups.
|
2013-09-07 02:57:00 +08:00
|
|
|
# The following is identical to Question.objects.get(id=1).
|
|
|
|
>>> Question.objects.get(pk=1)
|
|
|
|
<Question: What's up?>
|
2005-07-27 00:11:43 +08:00
|
|
|
|
2005-07-16 13:19:28 +08:00
|
|
|
# Make sure our custom method worked.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q = Question.objects.get(pk=1)
|
|
|
|
>>> q.was_published_recently()
|
2012-02-27 05:17:58 +08:00
|
|
|
True
|
2005-07-16 13:19:28 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
# Give the Question a couple of Choices. The create call constructs a new
|
2012-05-26 03:13:51 +08:00
|
|
|
# Choice object, does the INSERT statement, adds the choice to the set
|
2010-03-08 11:20:29 +08:00
|
|
|
# of available choices and returns the new Choice object. Django creates
|
|
|
|
# a set to hold the "other side" of a ForeignKey relation
|
2013-09-07 02:57:00 +08:00
|
|
|
# (e.g. a question's choice) which can be accessed via the API.
|
|
|
|
>>> q = Question.objects.get(pk=1)
|
2010-03-08 11:20:29 +08:00
|
|
|
|
|
|
|
# Display any choices from the related object set -- none so far.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.choice_set.all()
|
2010-03-08 11:20:29 +08:00
|
|
|
[]
|
|
|
|
|
|
|
|
# Create three choices.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.choice_set.create(choice_text='Not much', votes=0)
|
2006-05-18 20:41:24 +08:00
|
|
|
<Choice: Not much>
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.choice_set.create(choice_text='The sky', votes=0)
|
2006-05-18 20:41:24 +08:00
|
|
|
<Choice: The sky>
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> c = q.choice_set.create(choice_text='Just hacking again', votes=0)
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
# Choice objects have API access to their related Question objects.
|
|
|
|
>>> c.question
|
|
|
|
<Question: What's up?>
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2013-09-07 02:57:00 +08:00
|
|
|
# And vice versa: Question objects get access to Choice objects.
|
|
|
|
>>> q.choice_set.all()
|
2006-05-18 20:41:24 +08:00
|
|
|
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> q.choice_set.count()
|
2005-07-16 12:55:40 +08:00
|
|
|
3
|
|
|
|
|
|
|
|
# The API automatically follows relationships as far as you need.
|
|
|
|
# Use double underscores to separate relationships.
|
2007-08-07 10:33:11 +08:00
|
|
|
# This works as many levels deep as you want; there's no limit.
|
2013-09-07 02:57:00 +08:00
|
|
|
# Find all Choices for any question whose pub_date is in this year
|
2013-01-09 04:43:35 +08:00
|
|
|
# (reusing the 'current_year' variable we created above).
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> Choice.objects.filter(question__pub_date__year=current_year)
|
2006-05-18 20:41:24 +08:00
|
|
|
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
|
2005-07-16 12:55:40 +08:00
|
|
|
|
|
|
|
# Let's delete one of the choices. Use delete() for that.
|
2013-09-07 02:57:00 +08:00
|
|
|
>>> c = q.choice_set.filter(choice_text__startswith='Just hacking')
|
2005-07-16 12:55:40 +08:00
|
|
|
>>> c.delete()
|
|
|
|
|
2010-08-20 03:27:44 +08:00
|
|
|
For more information on model relations, see :doc:`Accessing related objects
|
2011-02-22 08:57:28 +08:00
|
|
|
</ref/models/relations>`. For more on how to use double underscores to perform
|
2011-11-17 05:04:28 +08:00
|
|
|
field lookups via the API, see :ref:`Field lookups <field-lookups-intro>`. For
|
|
|
|
full details on the database API, see our :doc:`Database API reference
|
|
|
|
</topics/db/queries>`.
|
2005-07-16 12:55:40 +08:00
|
|
|
|
2010-08-20 03:27:44 +08:00
|
|
|
When you're comfortable with the API, read :doc:`part 2 of this tutorial
|
|
|
|
</intro/tutorial02>` to get Django's automatic admin working.
|