Django HttpResponseRedirect обратная функция в учебнике - PullRequest
4 голосов
/ 26 августа 2009

Может кто-нибудь объяснить, что здесь происходит с Django Tutorial Part 4

В частности, как работает функция карты?

Я понимаю, что URL не должны быть жестко закодированы в функциях просмотра.

return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(p.id,)))

Ответы [ 2 ]

7 голосов
/ 26 августа 2009

Функция reverse имеет доступ к карте URL-адресов, которую Django использует для поиска функции просмотра входящих URL-адресов. В этом случае вы передаете функцию представления и аргументы, которые она получит, и она находит URL, который будет сопоставлен с ней. Затем функция HttpResponseRedirect создает ответ, который указывает браузеру посетить этот URL.

Это способ сказать: «Теперь вызовите представление mysite.polls.views.results».

1 голос
/ 26 августа 2009

При определении URL в Django у вас есть возможность указать имя для вашего URL: url (regex, view, kwargs = None, name = None, prefix = ''), например, что они делают в руководстве называя это poll_results:

url(r'^(?P<object_id>\d+)/results/$', 
'django.views.generic.list_detail.object_detail',
dict(info_dict, template_name='polls/results.html'), 'poll_results'),

У этого шаблона есть одна именованная группа: object_id. Функция reverse ищет шаблон URL с именем poll_results и передает p.id, который будет использоваться для object_id в шаблоне URL. Функция возвращает URL, созданный из регулярного выражения, и переданные параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...