繁体   English   中英

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

[英]How can I pass the same context from two views, Django?

我有三个模板:

  1. Base_template
  2. first_template
  3. second_template

first_template和second_template扩展了base_template。 因此,它们具有相同的旁白条。 我需要将相同的上下文传递给这些模板。 当然,我可以在第一个视图中创建一次,然后在第二个视图中创建。 但是,在我看来,这不是一个好习惯。 或者,我可以在utils.py中创建一个函数并将其添加到context_processors中,但是随后它将被传递到所有网站。

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

谢谢。

您有几种选择:

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

  2. 创建一个自定义上下文处理器; 并只需忽略其他模板中的变量即可。

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

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

在这四个中,较好的是2和3。 4也会起作用,但要求您了解装饰器的工作方式 我只是在其中添加了一些会话,以防万一这是一个临时需求-否则,您应该真正忽略会话并查看其他会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM