我正在学习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。这里有什么问题?我不应该将对象作为请求传递?非常感谢你
答案 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]})