Python 如何修复位于/blog/Django 1.8URL的NoReverseMatch

Python 如何修复位于/blog/Django 1.8URL的NoReverseMatch,python,django,Python,Django,我无法理解我的代码是如何工作的,试图显示post_detail.html、NoReverseMatch at/blog/ 找不到参数为“(2,)”且关键字参数为“{}”的“post_detail”的反转。尝试了1个模式:[“blog/$post/(?P\d+/$”] 这是我的代码: blog.views.py def post_list(request): posts =Post.objects.filter(published_date__lte=timezone.now()).ord

我无法理解我的代码是如何工作的,试图显示post_detail.html、NoReverseMatch at/blog/ 找不到参数为“(2,)”且关键字参数为“{}”的“post_detail”的反转。尝试了1个模式:[“blog/$post/(?P\d+/$”]

这是我的代码: blog.views.py

def post_list(request):
    posts =Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
    return render(request, 'blog/post_list.html', {'posts':posts})

def post_detail(request, post_pk):
    post = Post.objects.get(pk=post_pk)
    return render(request, 'blog/post_detail.html', {'post': post})
app_name='blog'
urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/(?P<post_pk>\d+)/$',    views.post_detail,  name='post_detail'),
]
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^blog/$', include(blog_urls, namespace='blog')),
]
blog.url.py

def post_list(request):
    posts =Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
    return render(request, 'blog/post_list.html', {'posts':posts})

def post_detail(request, post_pk):
    post = Post.objects.get(pk=post_pk)
    return render(request, 'blog/post_detail.html', {'post': post})
app_name='blog'
urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/(?P<post_pk>\d+)/$',    views.post_detail,  name='post_detail'),
]
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^blog/$', include(blog_urls, namespace='blog')),
]
post_list.html

{%extends'blog/base.html%}

{%block content%}

{% for post in posts %}
    < -- here is the error
    <h1><a href="{% url 'blog:post_detail' post.pk %}">{{post.title}}</a></h1>
    <p>published by: {{ post.published_date }}</p>
    <p>{{post.author}}</p>
    <p>{{post.text|linebreaksbr}}</p>
{% endfor %}
{%for posts in posts%}
<--这里是错误
发布人:{post.published_date}

{{post.author}}

{{post.text | linebreaksbr}}

{%endfor%}

{%endblock%}

include
中的url中删除正则表达式字符串结尾匹配字符
$

url(r'^blog/', include(blog_urls, namespace='blog')),
#           ^
这恰好是Django文档提到的预期错误:

请注意,本例中的正则表达式没有
$
(字符串结尾匹配字符),但不包括尾随斜杠。 每当Django遇到
include()
Django.conf.url.include()
)时, 它将删除URL中与该点匹配的任何部分,然后 将剩余的字符串发送到包含的URLconf以进行进一步操作 处理


谢谢你的帮助和信息先生我已经挣扎了3个小时了,