Python 如何修复位于/blog/Django 1.8URL的NoReverseMatch
我无法理解我的代码是如何工作的,试图显示post_detail.html、NoReverseMatch at/blog/ 找不到参数为“(2,)”且关键字参数为“{}”的“post_detail”的反转。尝试了1个模式:[“blog/$post/(?P\d+/$”] 这是我的代码: blog.views.pyPython 如何修复位于/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
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个小时了,