代码之家  ›  专栏  ›  技术社区  ›  Ben P

Django模板上未显示的变量

  •  0
  • Ben P  · 技术社区  · 5 年前

    我已经在Django视图中添加了变量,并尝试在模板中调用它们。我研究了几个相关的问题,我理解我需要添加一个上下文,我相信我已经做了。

    我对使用 render() ,在使用通用视图时是否需要这样做?

    以下是我的视图示例:

    class SubgenView(generic.TemplateView):
        template_name = 'projects/subgen.html'
        context_object_name = 'subject_line_gen'
        all = {
        "first": ['Save up','New in','Huge savings',],
        "cat": ['trainers','suits','onesies'],
        "brand": ['one', 'two', 'three'],
        "third": ['at crazy prices', 'in colours galore'],
        "end": ['click now!', 'come and get it!']
        }
    
        first = random.choice(all['first'])
    
        def create_subject_parts(self):
            first = random.choice(all['first'])
            test = 'hi'
            return first
    

    添加 {{ first }} {{ test }} 对于我的模板,什么都不产生,我遗漏了什么?

    1 回复  |  直到 5 年前
        1
  •  1
  •   4140tm    5 年前

    一般视图中的上下文由 get_context_data .

    如果是你的话

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["first"] = ['Save up','New in','Huge savings',]
        context["cat"] = ['trainers','suits','onesies']
        context["brand"] = ['one', 'two', 'three']
        context["third"] = ['at crazy prices', 'in colours galore']
        context["end"] = ['click now!', 'come and get it!']
        return context
    

    不需要调用或修改 render 在常规视图中,除非更改默认行为。

    Docs