2017-05-07 80 views
0

我一直想弄清楚一段时间,但我觉得我不知道框架足够好,以调试这个自己。NoReverseMatch在Django [新手]

基本上我创建了一个小博客风格的网站,我试图创建一个链接到页面来阅读帖子本身的帖子列表。

我有一个在我的模板循环:

模板/ home.py

<h1>Home Page</h1> 
<p>welcome to the ven home page, {{ username }}!</p> 

<a href="{% url 'users:logout' %}">Click here to log out</a> 
<br> 
<a href="{% url 'posts:create' %}">Click here to create a post</a> 

<h2>Posts:</h2> 

{% for post in posts %} 
    <div> 
    <hr> 
    <a href="{% url 'posts:show' id=post.id %}"><h4>{{post.title}}</h4></a> 
    <p>{{post.body}}</p> 
    <p><i>{{post.tags}}</i></p> 
    </div> 
{% endfor%} 

这是这是导致问题的行<a href="{% url 'posts:show' id=post.id %}"><h4>{{post.title}}</h4></a>。我发现了错误

Reverse for 'show' with keyword arguments '{'id': 1}' not found. 1 
pattern(s) tried: ['posts/(?P<post_id>\\d+)/view/$'] 

这里我的网址文件

url(r'^$', views.CreateFormView.as_view(), name='create'), 
url(r'^(?P<post_id>\d+)/view/$', views.show_post, name='show') 

的创建方法连接工作正常

,这里是它装载模板的观点:

def home(request): 
    if not request.user.is_authenticated: 
     return redirect('users:login') 

    posts = Post.objects.all() 
    username = request.user.username 
    return render(request, 'ven/home.html', {'username': username, 'posts': 
    posts}) 

如果需要更多信息,请告诉我,我会提供。 所有其他答案都表示,这个错误是与名称空间有关,但它与创建链接正常工作,所以我很难过。

在此先感谢!

回答

0

参数名称不匹配。

你会想改变
<a href="{% url 'posts:show' id=post.id %}"><h4>{{post.title}}</h4></a>


<a href="{% url 'posts:show' post_id=post.id %}"><h4>{{post.title}}</h4></a>

由于urls.py的show URL被定义为'^(?P<post_id>\d+)/view/$'

+0

谢谢!这似乎很简单,但我完全忽略了它 –