如果我有一个基于类的 View ,像这样,
class SomeView (View):
response_template='some_template.html'
var1 = 0
var2 = 1
def get(self, request, *args, **kwargs):
return render_to_response(self.response_template, locals(), context_instance=RequestContext(request))
我的问题是,在模板内
some_template.html
, 我如何访问 var1
和 var2
?据我了解,locals()
有点只是将所有局部变量转储到模板中,到目前为止效果很好。但是这些其他变量在技术上不是“本地”的,它们是一个类的一部分,那么我该如何传递它们呢?谢谢!
最佳答案
添加 self.var1
和 self.var2
到 get
中的上下文方法:
class SomeView (View):
response_template='some_template.html'
var1 = 0
var2 = 1
def get(self, request, *args, **kwargs):
context = locals()
context['var1'] = self.var1
context['var2'] = self.var2
return render_to_response(self.response_template, context, context_instance=RequestContext(request))
注:
render_to_response()
在 Django 3.0 及更高版本中被删除(使用 render()
代替)。另外,我不确定是否通过
locals()
作为模板的上下文是一个很好的做法。我更喜欢明确地构造传递给模板的数据 = 只传递模板中真正需要的数据。
关于Django将变量从基于类的 View 传递给模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232851/