如何将对象传递给HTML在Django view.py中

时间:2013-05-30 06:53:32

标签: python django django-views views

我正在学习django& Web开发并发现很难弄清楚HTML如何获取请求和显示信息。

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

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

错误信息显示如下。

  

'book'对象没有属性'META'

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

2 个答案:

答案 0 :(得分:4)

您无法将模型实例传递给RequestContext,因为RequestContext旨在与HttpRequest实例一起使用。请参阅documentation

如果要在模板中显示模型实例,只需在正常上下文中传递它,如下所示:

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>

希望有所帮助。

答案 1 :(得分:2)

呃,你使用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作为将图书传递给模板的方法,您需要将第二个参数传递给值,这是一个上下文var名称到字典的字典。

RequestContext(request, {'book': book.objects.all()[0]})