2

我正在学习 django 和 web 开发,发现很难弄清楚 HTML 如何接受请求和显示信息。

在下面的代码中,我想获取第一个书籍对象(具有两个属性'title''author')并将其传递给 display.html 以显示书籍对象的属性信息。当我尝试下面的代码时

def test_display(request):
    request = book.objects.all()[0]
    return render_to_response('display.html', RequestContext(request));

错误消息显示如下。

“书”对象没有属性“元”

但是在我的书类中models.py META 是定义的。这里有什么问题?我不应该将对象作为请求传递吗?非常感谢

4

2 回答 2

4

您不能将模型实例传递给RequestContext,因为RequestContext它是为使用HttpRequest实例而设计的。请参阅文档

如果你想在模板中显示你的模型实例,只需在普通上下文中传递它,如下所示:

def test_display(request):
    book = book.objects.all()[0]
    return render_to_response('display.html', {'book': book})

然后您的模板可以如下所示:

<ul>
  <li>{{ book.title }}</li>
  <li>{{ book.author }}</li>
</ul>

希望有帮助。

于 2013-05-30T06:59:08.747 回答
3

呃,你用RequestContext错了。它不期望模型实例...

删除说request = book.objects.all()[0]

 def test_display(request):
         request = book.objects.all()[0]
         # ^^^^^^ you're redefining request
         return render_to_response('display.html', RequestContext(request));
                                                                         # ^ why;

还假设您尝试使用 RequestContext 作为将书传递给模板的一种方式,您需要将第二个参数传递给它,该参数是上下文变量名称到值的字典。

RequestContext(request, {'book': book.objects.all()[0]})
于 2013-05-30T06:57:09.513 回答