Django NoReverseMatch-与#x27相反;细节';找不到带参数和关键字参数{}
由于某种原因,我似乎无法解决此错误。我正在使用Django 1.5 我得到的实际错误是Django NoReverseMatch-与#x27相反;细节';找不到带参数和关键字参数{},django,Django,由于某种原因,我似乎无法解决此错误。我正在使用Django 1.5 我得到的实际错误是 Reverse for 'detail' with arguments '()' and keyword arguments '{u'slug': u'third-post'}' not found. 在我的projest目录中,我有一个url.py from django.conf.urls import patterns, include, url # Uncomment the next two l
Reverse for 'detail' with arguments '()' and keyword arguments '{u'slug': u'third-post'}' not found.
在我的projest目录中,我有一个url.py
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'blog.views.home', name='home'),
# url(r'^blog/', include('blog.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
#include the blogapp url
url(r'', include('blogapp.urls', namespace='blog')),
)
my app文件夹中的url.py如下所示
urlpatterns = patterns ('',
url(r'^$',
ListView.as_view(
queryset = Post.objects.order_by('-pub_date')[:5],
context_object_name = 'latest_posts',
template_name = 'blogapp/default.html'),
name = 'index'
),
url(r'^post/(?P<slug>\w+)/$',
PostDetailView.as_view(),
name = 'detail'
),
)
class PostDetailView(DetailView):
template_name = 'blogapp/post/detail.html'
def get_object(self):
return get_object_or_404(Post, slug__iexact = self.kwargs['slug'])
我的html中有这个
{% for p in latest_posts %}
<li><a href="{% url 'blog:detail' p.slug %}">{{p.title}}</a></li>
{% endfor %}
奇怪的是,在我的html中,这行代码是有效的
<li><a href="{% url 'blog:detail' p.id %}">{{p.title}}</a></li>
为什么p.id有效而p.slug无效
这是回溯
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.5
Python Version: 2.7.2
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'south',
'blogapp')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Template error:
In template .../Development/Python/Django/dev/blog/blogapp/templates/blogapp/default.html, error at line 11
Reverse for 'detail' with arguments '()' and keyword arguments '{u'slug': u'third-post'}' not found.
1 : {% extends "blogapp/base.html" %}
2 :
3 : {% block title %}Blog Posts{% endblock %}
4 :
5 : {% block body %}
6 :
7 : {% if latest_posts %}
8 : <p>Latest 5 blog posts</p>
9 : <ul>
10 : {% for p in latest_posts %}
11 : <li><a href=" {% url 'blog:detail' slug=p.slug %} ">{{p.title}}</a></li>
12 : {% endfor %}
13 : </ul>
14 : {% else %}
15 : <p>No blog posts published.</p>
16 : {% endif %}
17 :
18 : {% endblock %}
19 :
20 :
Traceback:
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
140. response = response.render()
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/response.py" in render
105. self.content = self.rendered_content
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/response.py" in rendered_content
82. content = template.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/base.py" in render
140. return self._render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/loader_tags.py" in render
124. return compiled_parent._render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/loader_tags.py" in render
63. result = block.nodelist.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/defaulttags.py" in render
284. return nodelist.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/defaulttags.py" in render
188. nodelist.append(node.render(context))
File ".../.virtualenvs/env1/lib/python2.7/site-packages/django/template/defaulttags.py" in render
424. raise e
Exception Type: NoReverseMatch at /
Exception Value: Reverse for 'detail' with arguments '()' and keyword arguments '{u'slug': u'third-post'}' not found.
环境:
请求方法:获取
请求URL:http://127.0.0.1:8000/
Django版本:1.5
Python版本:2.7.2
已安装的应用程序:
(“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.sites”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“django.contrib.admin”,
“django.contrib.admindocs”,
“南方”,
“博客应用程序”)
已安装的中间件:
('django.middleware.common.CommonMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
模板错误:
在template…/Development/Python/Django/dev/blog/blogapp/templates/blogapp/default.html中,第11行出现错误
对于参数为“()”且关键字参数为“{u'slug:u'third-post'}”的“detail”,则相反。
1:{%extends“blogapp/base.html”%}
2 :
3:{%block title%}博客帖子{%endblock%}
4 :
5:{%block body%}
6 :
7:{%if-latest_posts%}
8:最近5篇博客文章
9:
10:{p在最近的_帖子中占%}
11:
12:{%endfor%}
13:
14:{%else%}
15:没有发布博客帖子
16:{%endif%}
17 :
18:{%endblock%}
19 :
20 :
回溯:
get\u响应中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/core/handlers/base.py”
140response=response.render()
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/response.py”
105self.content=自渲染内容
呈现内容中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/response.py”
82content=template.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/base.py”
140返回self.\u呈现(上下文)
文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/base.py”在_render中
134返回self.nodelist.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/loader_tags.py”
124返回编译的\u父对象。\u呈现(上下文)
文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/base.py”在_render中
134返回self.nodelist.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/loader_tags.py”
63结果=block.nodelist.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/defaulttags.py”
284返回nodelist.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/defaulttags.py”
188nodelist.append(node.render(上下文))
render中的文件“...virtualenvs/env1/lib/python2.7/site packages/django/template/defaulttags.py”
424提高e
异常类型:NoReverseMatch位于/
异常值:与参数“()”和关键字参数“{u'slug':u'third-post'}”相反的'detail'未找到。
因为您的url代码不支持此字符“-”,所以它必须是
url(r'^post/(?P<slug>[\w\-]+)/$',
PostDetailView.as_view(),
name = 'detail'
),
url(r'^post/(?P[\w\-]+)/$”,
PostDetailView.as_view(),
名称='detail'
),
尝试使用{%url'blog:detail'slug=p.slug%}
我尝试了{%url'blog:detail'slug=p.slug%}它不起作用。相同的错误您是否使用debug视图检查p.slug的内容?是否可以发布回溯?url将显示为post/123/
。如何摆脱最后的/
@アレックス: 在美元符号前加一个问号,使最后的斜杠可选。/?$而不是/$
url(r'^post/(?P<slug>[\w\-]+)/$',
PostDetailView.as_view(),
name = 'detail'
),