get_error_or_404返回没有属性的元组

时间:2018-08-08 07:55:50

标签: python django

学习django,最近无法修复此错误。错误提示:

'tuple' object has no attribute 'title'.

我的views.py文件如下:

def post_detail(request):
    instance = get_object_or_404(Post, id=3),
    context = {"instance": instance,
               "title": instance.title       # Line of error
              }
    return render(request, "post_detail.html", context)

模板文件post_detail.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Post Details</title>
</head>
<body>
<h1>
{{ title }} logged in.<br><br></h1>
{{instance.title}}<br>
{{instance.content}}<br>
{{instance.updated}}<br>
{{instance.timestamp}}<br>
{{instance.id}}<br><br>

</body>
</html>

models.py

class Post(models.Model):
    title = models.CharField(max_length=120)
    content =  models.TextField()
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False,auto_now_add=True)


    def __str__(self):
        return self.title

有人可以指出我要去哪里了吗?

1 个答案:

答案 0 :(得分:3)

您写:

instance = get_object_or_404(Post, id=3),
#                                       ^ comma

请注意该行末尾的逗号(,)。这意味着您将get_object_or_404(..)调用的结果包装 singleton 元组(一个元素中,恰好个)。因此,如果结果为42(当然不可能在此处),则通过在末尾写逗号来构造元组(42,)

如果您删除逗号,则instance将具有函数调用本身的结果。