能有人請解釋這到底是怎麼回事的Django Tutorial Part 4Django的HttpResponseRedirect在教程反向功能
具體如何映射功能工作?
我知道URL不應該在視圖函數中硬編碼。
return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(p.id,)))
能有人請解釋這到底是怎麼回事的Django Tutorial Part 4Django的HttpResponseRedirect在教程反向功能
具體如何映射功能工作?
我知道URL不應該在視圖函數中硬編碼。
return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(p.id,)))
reverse
函數可以訪問Django用來查找傳入URL的查看函數的URL映射。在這種情況下,你傳遞一個視圖函數和它將得到的參數,並找到映射到它的URL。然後HttpResponseRedirect函數創建一個響應,指示瀏覽器訪問該URL。
這是一種說法,「現在調用mysite.polls.views.results視圖。」
當Django中定義的網址您可以選擇指定一個名稱,網址的選項:URL(正則表達式,視圖,kwargs =無,名=無,前綴=「」),比如他們做什麼in the tutorial命名它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
。反轉函數查找名爲poll_results
的URL模式,並通過p.id
用於URL模式中的object_id
。該函數返回由正則表達式構建的URL和傳遞的參數。