Added some links in /docs/intro/overview.txt

Thanks Claes Ström for the patch.
This commit is contained in:
Tim Graham 2013-05-19 12:06:35 -04:00
parent f7d7d2be4b
commit bdde7feb26
2 changed files with 25 additions and 17 deletions

View File

@ -72,6 +72,8 @@ following:
For more information on the :ttag:`load` tag, read its documentation. For more information on the :ttag:`load` tag, read its documentation.
.. _howto-writing-custom-template-filters:
Writing custom template filters Writing custom template filters
------------------------------- -------------------------------

View File

@ -16,15 +16,17 @@ Design your model
================= =================
Although you can use Django without a database, it comes with an Although you can use Django without a database, it comes with an
object-relational mapper in which you describe your database layout in Python `object-relational mapper`_ in which you describe your database layout in Python
code. code.
.. _object-relational mapper: http://en.wikipedia.org/wiki/Object-relational_mapping
The :doc:`data-model syntax </topics/db/models>` offers many rich ways of The :doc:`data-model syntax </topics/db/models>` offers many rich ways of
representing your models -- so far, it's been solving two years' worth of representing your models -- so far, it's been solving two years' worth of
database-schema problems. Here's a quick example, which might be saved in database-schema problems. Here's a quick example, which might be saved in
the file ``mysite/news/models.py``:: the file ``mysite/news/models.py``::
from django.db import models from django.db import models
class Reporter(models.Model): class Reporter(models.Model):
full_name = models.CharField(max_length=70) full_name = models.CharField(max_length=70)
@ -57,8 +59,9 @@ tables in your database for whichever tables don't already exist.
Enjoy the free API Enjoy the free API
================== ==================
With that, you've got a free, and rich, :doc:`Python API </topics/db/queries>` to With that, you've got a free, and rich, :doc:`Python API </topics/db/queries>`
access your data. The API is created on the fly, no code generation necessary: to access your data. The API is created on the fly, no code generation
necessary:
.. code-block:: python .. code-block:: python
@ -135,9 +138,9 @@ A dynamic admin interface: it's not just scaffolding -- it's the whole house
============================================================================ ============================================================================
Once your models are defined, Django can automatically create a professional, Once your models are defined, Django can automatically create a professional,
production ready :doc:`administrative interface </ref/contrib/admin/index>` -- a Web production ready :doc:`administrative interface </ref/contrib/admin/index>` --
site that lets authenticated users add, change and delete objects. It's as easy a Web site that lets authenticated users add, change and delete objects. It's
as registering your model in the admin site:: as easy as registering your model in the admin site::
# In models.py... # In models.py...
@ -173,9 +176,9 @@ application. Django encourages beautiful URL design and doesn't put any cruft
in URLs, like ``.php`` or ``.asp``. in URLs, like ``.php`` or ``.asp``.
To design URLs for an app, you create a Python module called a :doc:`URLconf To design URLs for an app, you create a Python module called a :doc:`URLconf
</topics/http/urls>`. A table of contents for your app, it contains a simple mapping </topics/http/urls>`. A table of contents for your app, it contains a simple
between URL patterns and Python callback functions. URLconfs also serve to mapping between URL patterns and Python callback functions. URLconfs also serve
decouple URLs from Python code. to decouple URLs from Python code.
Here's what a URLconf might look like for the ``Reporter``/``Article`` Here's what a URLconf might look like for the ``Reporter``/``Article``
example above:: example above::
@ -188,7 +191,7 @@ example above::
(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'), (r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
) )
The code above maps URLs, as simple regular expressions, to the location of The code above maps URLs, as simple `regular expressions`_, to the location of
Python callback functions ("views"). The regular expressions use parenthesis to Python callback functions ("views"). The regular expressions use parenthesis to
"capture" values from the URLs. When a user requests a page, Django runs "capture" values from the URLs. When a user requests a page, Django runs
through each pattern, in order, and stops at the first one that matches the through each pattern, in order, and stops at the first one that matches the
@ -196,6 +199,8 @@ requested URL. (If none of them matches, Django calls a special-case 404 view.)
This is blazingly fast, because the regular expressions are compiled at load This is blazingly fast, because the regular expressions are compiled at load
time. time.
.. _regular expressions: http://docs.python.org/2/howto/regex.html
Once one of the regexes matches, Django imports and calls the given view, which Once one of the regexes matches, Django imports and calls the given view, which
is a simple Python function. Each view gets passed a request object -- is a simple Python function. Each view gets passed a request object --
which contains request metadata -- and the values captured in the regex. which contains request metadata -- and the values captured in the regex.
@ -216,7 +221,7 @@ Generally, a view retrieves data according to the parameters, loads a template
and renders the template with the retrieved data. Here's an example view for and renders the template with the retrieved data. Here's an example view for
``year_archive`` from above:: ``year_archive`` from above::
from django.shortcuts import render_to_response from django.shortcuts import render_to_response
def year_archive(request, year): def year_archive(request, year):
a_list = Article.objects.filter(pub_date__year=year) a_list = Article.objects.filter(pub_date__year=year)
@ -233,8 +238,8 @@ The code above loads the ``news/year_archive.html`` template.
Django has a template search path, which allows you to minimize redundancy among Django has a template search path, which allows you to minimize redundancy among
templates. In your Django settings, you specify a list of directories to check templates. In your Django settings, you specify a list of directories to check
for templates. If a template doesn't exist in the first directory, it checks the for templates with :setting:`TEMPLATE_DIRS`. If a template doesn't exist in the
second, and so on. first directory, it checks the second, and so on.
Let's say the ``news/year_archive.html`` template was found. Here's what that Let's say the ``news/year_archive.html`` template was found. Here's what that
might look like: might look like:
@ -265,9 +270,10 @@ character). This is called a template filter, and it's a way to filter the value
of a variable. In this case, the date filter formats a Python datetime object in of a variable. In this case, the date filter formats a Python datetime object in
the given format (as found in PHP's date function). the given format (as found in PHP's date function).
You can chain together as many filters as you'd like. You can write custom You can chain together as many filters as you'd like. You can write :ref:`custom
filters. You can write custom template tags, which run custom Python code behind template filters <howto-writing-custom-template-filters>`. You can write
the scenes. :doc:`custom template tags </howto/custom-template-tags>`, which run custom
Python code behind the scenes.
Finally, Django uses the concept of "template inheritance": That's what the Finally, Django uses the concept of "template inheritance": That's what the
``{% extends "base.html" %}`` does. It means "First load the template called ``{% extends "base.html" %}`` does. It means "First load the template called