Django在/

时间:2017-11-06 18:26:12

标签: python django

我正在尝试将图片显示为图片所代表的帖子,我必须做错事,但我不知道是什么。

我在尝试访问我网站的主页时遇到此错误。

模板渲染时出错

在模板... / home.html中,第48行出错

使用关键字参数'{'post_id':''}'找不到'view_post'。尝试了1种模式:['post /(?P [0-9] +)/ $']

及其展示的代码

<a href="{% url 'view_post' post_id=post.post_id %}"><img src="media/{{ item.image }}"></a>

这也是我的观点

def view_post(request, post_id):
    post = get_object_or_404(Post,id=post_id)
    return render(request,'gram/view_post.html',{'post': post})

并且网址

url(r'^post/(?P<post_id>[0-9]+)/$', views.view_post, name='view_post'),

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我根据您的代码示例做了一些假设。这一行:

post = get_object_or_404(Post,id=post_id)

表示课程Post有一个属性id。但是,在您的模板中,您可以拨打post.post_id。假设post是类Post的对象实例,它应该具有属性id。可能在课程post_id中没有Post这样的属性。

这意味着模板中post.post_id不会返回输出。您的网址(此处未显示)需要一个整数['post/(?P[0-9]+)/$']。因此会抛出错误。

试试这个代码段:

{% url 'view_post' post_id=post.id %}

并检查会发生什么。

正如我所说,这是基于一些假设,我不保证成功。

答案 1 :(得分:0)

原来我只是愚蠢而且让自己很难受。问题是我在home.html中已经完成了<a href,并且主页视图并不知道post.id是什么 - 显然。问题已解决。