首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django NameSpace错误

Django NameSpace错误
EN

Stack Overflow用户
提问于 2013-02-22 18:48:29
回答 1查看 1.2K关注 0票数 0

我设计了这个投票应用程序,我正在尝试将一个硬代码url转换成一个命名空间url,但在路径中出现了错误。

这是我的index.html,正如你所看到的,他们的硬编码url指向我的URLconf。

代码语言:javascript
复制
{% 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。

代码语言:javascript
复制
 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。

代码语言:javascript
复制
 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')),                   
 ,
 )

我的看法是:

代码语言:javascript
复制
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 %}替换硬编码错误

但是我收到了这个错误

代码语言:javascript
复制
 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而不会出现任何错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 18:56:32

根据用例的不同,实现方法也会有所不同。

你可以这样做,这可能是你的用例。

代码语言:javascript
复制
{% url detail poll.id %}

其中,url标记与名称detail和以下poll.id匹配

我们想在这里讨论的另一种方式是,如果你要让同一个应用程序有多个实例,那么你就必须使用url名称空间。Discussed here

urls.py

代码语言:javascript
复制
url(r'^polls/', include('core.urls')),

包含的urls.py

代码语言:javascript
复制
urlpatterns = patterns('',
    url(r'^/(?P<polls_id>\d+)/$', 'core.views.polls_detail_view',name="poll_detail")
)

模板

代码语言:javascript
复制
 <a href="{% url poll_detail 1 %}">To Poll Detail</a>

`views.py

代码语言:javascript
复制
def polls_detail_view(request, poll_detail):
     print "Hello Poll detail: %s" % (poll_detail)

**编辑**在谷歌上搜索了这两篇SO帖子后,解释了为什么OP的配置是不可行的。

First SO Post

Second SO Post

这些是19个月前的票。

**编辑**

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15022404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档