我目前正在阅读“Django by Example”一书,第1章:构建博客应用程序,当我尝试访问127.0.0.1:8000/blog/时出现以下错误
/ blog / 中的NoReverseMatch使用参数'(2017,'08','03'反转'post_detail', 找不到'new-title')'和关键字参数'{}'。 1种模式 尝试: ['博客/ / / / ^(P \ d {4}?)(P \ d {2}?)(P \ d {2}?)(P [ - ?\ W] +) / $']
这是我的templates / blog / base.html文件
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<title>{% block title %} {% endblock %}</title>
<link href="{% static "css/blog.css" %}" rel="stylesheet">
</head>
<body>
<div id = "content">
{% block content %}
{% endblock %}
</div>
<div id = "sidebar">
<h2> My Blog</h2>
<p> This is my blog </p>
</div>
</body>
</html>
和我的templates / blog / post / list.html文件
{% extends "blog/base.html" %}
{% block title %}My Blog {% endblock %}
{% block content %}
<h1> My Blog </h1>
{% for post in posts %}
<h2>
<a href="{{ post.get_absolute_url }}">
{{ post.title }}
</a>
</h2>
<p class="date">
Published {{ post.publish }} by {{ post.author }}
</p>
{{ post.body|truncatewords:30|linebreaks }}
{% endfor %}
{% endblock %}
我似乎无法找到问题所在,所以我将非常感谢您的帮助。
如果它有帮助,我在Linux系统上使用Django 1.8.6和Python 3.6.2与virtualenvwrapper。
答案 0 :(得分:2)
你的正则表达式中至少有两个错误。
首先,在最终模式之前你有一个迷路^
。这意味着&#34;匹配字符串&#34;的开头,所以将它放在字符串的中间将始终失败。
其次,你在最后的斜线之前有一个空格。
答案 1 :(得分:0)
你缺少的是&#34; post_detail&#34;的反向网址。您需要一个名称值为&#34; post_detail&#34;。
的网址将此添加到urls.py
url(r'^blog/(?P\d{4})/(?P\d{2})/(?P\d{2})/^(?P[-\w]+) /$'', views.post_detail, name='post_detail'),
你的观点也应该接受正则表达式;
def post_detail(request, pattern):
....
return render(request, template, context)