我设计了这个投票应用程序,我正在尝试将一个硬代码url转换成一个命名空间url,但在路径中出现了错误。
这是我的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 %}我的应用程序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 detail poll.id %}或{% url myapp:detail 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 URLconf而不会出现任何错误?
发布于 2013-02-22 18:56:32
根据用例的不同,实现方法也会有所不同。
你可以这样做,这可能是你的用例。
{% url detail poll.id %}其中,url标记与名称detail和以下poll.id匹配
我们想在这里讨论的另一种方式是,如果你要让同一个应用程序有多个实例,那么你就必须使用url名称空间。Discussed here
主urls.py
url(r'^polls/', include('core.urls')),包含的urls.py
urlpatterns = patterns('',
url(r'^/(?P<polls_id>\d+)/$', 'core.views.polls_detail_view',name="poll_detail")
)模板
<a href="{% url poll_detail 1 %}">To Poll Detail</a>`views.py
def polls_detail_view(request, poll_detail):
print "Hello Poll detail: %s" % (poll_detail)**编辑**在谷歌上搜索了这两篇SO帖子后,解释了为什么OP的配置是不可行的。
这些是19个月前的票。
**编辑**
https://stackoverflow.com/questions/15022404
复制相似问题