如何从两个视图传递相同的上下文,Django?

时间:2015-12-23 05:22:51

标签: python django

我有三个模板:

  1. Base_template
  2. first_template
  3. second_template
  4. first_template和second_template扩展base_template。所以,他们有相同的旁边吧。我需要将相同的上下文传递给这些模板。当然,我可以在第一个视图中创建一次,然后在第二个视图中创建一次。但是,在我看来,这不是一个好的做法。或者,我可以在utils.py中创建一个函数并将其添加到context_processors,但随后它将传递给所有网站。

    我该怎么办?请给我一个建议。

    感谢。

1 个答案:

答案 0 :(得分:2)

您有几个选择:

  1. 您可以使用会话 - 将上下文添加到会话中,然后直接从模板中的会话中呈现它。

  2. 创建自定义上下文处理器;并简单地忽略其他模板中的变量。

  3. 创建基本视图类,然后在其他视图中继承它。这样,您的上下文只定义一次。

  4. 创建一个自定义装饰器,将上下文注入响应,然后在需要的地方装饰方法(或类)。

  5. 在这四个中,2个和3个是更好的; 4也可以,但要求你了解decorators work的方式。我刚刚在那里添加的会话,以防这是一个临时要求 - 否则你应该忽略会话并查看其他会话。