我設計了這個投票應用程序,我試圖將硬代碼url轉換爲命名空間url,但沿路徑出現錯誤。Django NameSpace錯誤
這是我的index.html,你可以看到他們的一個硬編碼的URL指向我的URLconf。
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
我的myapp URLconf。
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls import patterns, include, url
urlpatterns = patterns('myapp.views',
url(r'^$', 'index', name="index"),
url(r'^(?P<poll_id>\d+)/$', 'detail',name="detail"),
url(r'^(?P<poll_id>\d+)/results/$', 'results', name="results"),
url(r'^(?P<poll_id>\d+)/vote/$', 'vote', name="vote"),
)
這是我的主要URLconf。
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
admin.autodiscover()
urlpatterns = patterns('',
url(r'^polls/', include('myapp.urls', namespace='myapp')),
,
)
我的看法是:
def detail(request, poll_id):
p = get_object_or_404(Poll, pk=poll_id)
return render_to_response('myapp/detail.html', {'poll': p},
context_instance=RequestContext(request))
我試着更換爲硬編碼錯誤{%URL詳細poll.id%}或{%URL的myapp:詳細poll.id%}
但我收到此錯誤
NoReverseMatch at /polls/
Reverse for 'detail' with arguments '(5,)' and keyword arguments '{}' not found.
Request Method: GET
Request URL: http://127.0.0.1:8000/polls/
Django Version: 1.4.3
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'detail' with arguments '(5,)' and keyword arguments '{}' not found.
Error during template rendering
In template C:\djcode\mysite\myapp\templates\myapp\index.html, error at line 4
Reverse for 'detail' with arguments '(5,)' and keyword arguments '{}' not found.
1 {% if latest_poll_list %}
2 <ul>
3 {% for poll in latest_poll_list %}
4 <li><a href="{% url detail poll.id %}">{{ poll.question }}</a></li>
5 {% endfor %}
6 </ul>
7 {% else %}
8 <p>No polls are available.</p>
9 {% endif %}
我如何轉換這種硬編碼的URL到命名空間,以便它可以指向MyApp的URL配置無線網絡沒有任何錯誤?
我假設你想要的語法'myapp:index'? – 2013-02-22 10:52:57
那麼這個index.html模板會將poll.id傳遞給名爲detail的視圖函數。 – donkeyboy72 2013-02-22 10:55:05
整個代碼工作正常,我只是想將硬編碼的網址轉換爲名稱空間。 「/ polls/{{poll.id}} /」指向poll.id的詳細功能 – donkeyboy72 2013-02-22 10:56:04