Django反向错误:NoReverseMatch

时间:2014-01-02 18:21:13

标签: python django

我看过很多不同的帖子,但是他们都在使用不同版本的django,或者似乎不起作用。这是我正在尝试做的事情:

urls.py(适用于整个项目):

    from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
        url(r'^blog/', include('blog.urls', namespace="blog")),
        url(r'^admin/', include(admin.site.urls)),
    )

urls.py(特定于应用):

urlpatterns = patterns ('' ,
url(r'^$', views.index, name='index'),

url(r'^(?P<slug>[\w\-]+)/$', views.posts, name="postdetail"),

)

views.py:

def index(request):
    posts = Post.objects.filter(published=True)
    return render(request,'blog/index.html',{'posts':posts})

def posts(request, slug):
    post = get_object_or_404(Post,slug=slug)
    return render(request, 'blog/post.html',{'post':post})

最后是模板:

 {% block title %} Blog Archive {% endblock %}

    {% block content %}
        <h1> My Blog Archive </h1>
        {% for post in posts %}
        <div class="post">
            <h2>
                <a href="{% url "postdetail" slug=post.slug %}">
                    {{post.title}}
                </a>
            </h2>
            <p>{{post.description}}</p>
            <p>
                Posted on
                <time datetime="{{post.created|date:"c"}}">
                    {{post.created|date}}
                </time>
            </p>
        </div>
        {% endfor %}
    {% endblock %}

由于某种原因,这给了我一个“无反向匹配”:反向'postdetail',带有参数'()'和关键字参数'{u'slug':u'third'}'找不到。尝试了0种模式:[]

我已经尝试删除模板中postdetail周围的双引号,并且我也尝试通过视图名称而不是模式名称来引用它。仍然没有运气。文档也没有太大帮助。

非常感谢帮助!感谢

1 个答案:

答案 0 :(得分:37)

您在包含网址时使用了命名空间,因此您可能需要使用"blog:postdetail"来反转它。