Django将变量从基于类的 View 传递给模板

标签 django class django-templates django-views django-class-based-views

如果我有一个基于类的 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 , 我如何访问 var1var2 ?据我了解,locals()有点只是将所有局部变量转储到模板中,到目前为止效果很好。但是这些其他变量在技术上不是“本地”的,它们是一个类的一部分,那么我该如何传递它们呢?

谢谢!

最佳答案

添加 self.var1self.var2get 中的上下文方法:

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/

相关文章:

django - 使用 Django 设置紧凑的隐私政策

python - 在循环的Django模板中,检查当前项目是否与前一个项目不同

python - 使用 settings.py 或 models.py 在 django 中自动创建数据库

django - Django反向()问题

python - 删除数据列表中的重复项 Python 2.7/Django

java - 我应该创建一个新变量还是始终访问类对象中的数据?

C++ 错误 : "no instance of function template matches the required type"

python - 什么时候在 Python 中初始化类变量?

python - 遍历django模板中的外键相关表

python - Django 模板 : Use different css for pages