Fixed #11959 -- Updated the tutorial to ensure that the admin site continues to work after URLpatterns are introduced. Thanks to carljm for the report and draft patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@11621 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2009-10-14 13:38:31 +00:00
parent b30cba4e2b
commit f14833ee67
4 changed files with 24 additions and 14 deletions

View File

@ -281,6 +281,7 @@ That'll create a directory :file:`polls`, which is laid out like this::
polls/ polls/
__init__.py __init__.py
models.py models.py
tests.py
views.py views.py
This directory structure will house the poll application. This directory structure will house the poll application.

View File

@ -34,11 +34,11 @@ activate the admin site for your installation, do these three things:
* Run ``python manage.py syncdb``. Since you have added a new application * Run ``python manage.py syncdb``. Since you have added a new application
to :setting:`INSTALLED_APPS`, the database tables need to be updated. to :setting:`INSTALLED_APPS`, the database tables need to be updated.
* Edit your ``mysite/urls.py`` file and uncomment the lines below the * Edit your ``mysite/urls.py`` file and uncomment the lines that reference
"Uncomment the next two lines..." comment. This file is a URLconf; the admin -- there are three lines in total to uncomment. This file is a
we'll dig into URLconfs in the next tutorial. For now, all you need to URLconf; we'll dig into URLconfs in the next tutorial. For now, all you
know is that it maps URL roots to applications. In the end, you should need to know is that it maps URL roots to applications. In the end, you
have a ``urls.py`` file that looks like this: should have a ``urls.py`` file that looks like this:
.. versionchanged:: 1.1 .. versionchanged:: 1.1
The method for adding admin urls has changed in Django 1.1. The method for adding admin urls has changed in Django 1.1.

View File

@ -171,15 +171,23 @@ and put the following Python code in it::
This is the simplest view possible. Go to "/polls/" in your browser, and you This is the simplest view possible. Go to "/polls/" in your browser, and you
should see your text. should see your text.
Now add the following view. It's slightly different, because it takes an Now lets add a few more views. These views are slightly different, because
argument (which, remember, is passed in from whatever was captured by the they take an argument (which, remember, is passed in from whatever was
regular expression in the URLconf):: captured by the regular expression in the URLconf)::
def detail(request, poll_id): def detail(request, poll_id):
return HttpResponse("You're looking at poll %s." % poll_id) return HttpResponse("You're looking at poll %s." % poll_id)
Take a look in your browser, at "/polls/34/". It'll display whatever ID you def results(request, poll_id):
provide in the URL. return HttpResponse("You're looking at the results of poll %s." % poll_id)
def vote(request, poll_id):
return HttpResponse("You're voting on poll %s." % poll_id)
Take a look in your browser, at "/polls/34/". It'll run the `detail()` method
and display whatever ID you provide in the URL. Try "/polls/34/results/" and
"/polls/34/vote/" too -- these will display the placeholder results and voting
pages.
Write views that actually do something Write views that actually do something
====================================== ======================================
@ -467,10 +475,10 @@ Copy the file ``mysite/urls.py`` to ``mysite/polls/urls.py``. Then, change
``mysite/urls.py`` to remove the poll-specific URLs and insert an ``mysite/urls.py`` to remove the poll-specific URLs and insert an
:func:`~django.conf.urls.defaults.include`:: :func:`~django.conf.urls.defaults.include`::
... # ...
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^polls/', include('mysite.polls.urls')), (r'^polls/', include('mysite.polls.urls')),
... # ...
:func:`~django.conf.urls.defaults.include`, simply, references another URLconf. :func:`~django.conf.urls.defaults.include`, simply, references another URLconf.
Note that the regular expression doesn't have a ``$`` (end-of-string match Note that the regular expression doesn't have a ``$`` (end-of-string match

View File

@ -52,10 +52,11 @@ created a URLconf for the polls application that includes this line::
(r'^(?P<poll_id>\d+)/vote/$', 'vote'), (r'^(?P<poll_id>\d+)/vote/$', 'vote'),
So let's create a ``vote()`` function in ``mysite/polls/views.py``:: We also created a dummy implementation of the ``vote()`` function. Let's
create a real version. Add the following to ``mysite/polls/views.py``::
from django.shortcuts import get_object_or_404, render_to_response from django.shortcuts import get_object_or_404, render_to_response
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from mysite.polls.models import Choice, Poll from mysite.polls.models import Choice, Poll
# ... # ...