mirror of https://github.com/django/django.git
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:
parent
b30cba4e2b
commit
f14833ee67
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
# ...
|
# ...
|
||||||
|
|
Loading…
Reference in New Issue