我有三个模板:
first_template和second_template扩展base_template。所以,他们有相同的旁边吧。我需要将相同的上下文传递给这些模板。当然,我可以在第一个视图中创建一次,然后在第二个视图中创建一次。但是,在我看来,这不是一个好的做法。或者,我可以在utils.py中创建一个函数并将其添加到context_processors,但随后它将传递给所有网站。
我该怎么办?请给我一个建议。
感谢。
答案 0 :(得分:2)
您有几个选择:
您可以使用会话 - 将上下文添加到会话中,然后直接从模板中的会话中呈现它。
创建自定义上下文处理器;并简单地忽略其他模板中的变量。
创建基本视图类,然后在其他视图中继承它。这样,您的上下文只定义一次。
创建一个自定义装饰器,将上下文注入响应,然后在需要的地方装饰方法(或类)。
在这四个中,2个和3个是更好的; 4也可以,但要求你了解decorators work的方式。我刚刚在那里添加的会话,以防这是一个临时要求 - 否则你应该忽略会话并查看其他会话。