在Django中使用模板标记检索数据是一种不好的做法吗?

2024-04-25 20:45:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个第三方应用程序(我们称之为app a),它在views.py中使用上下文处理器将数据发送到特定的url。它发送的数据在模板中被用来确定导航栏的样式。例如,如果数据库中存在一个A.project条目,它将在其模板中显示<i> Projects </i>。你知道吗

现在我想扩展这个应用程序,并使用它使用的导航栏,但是添加一个额外的参数blog,其中blog应用程序是第三方应用程序。问题是,现在每当你转到与博客应用程序相关联的url时,例如(/blog),导航栏中来自应用程序A的任何项目都将丢失,因为从博客应用程序发送的上下文不同,并且缺少来自应用程序A的数据

我可能可以创建自定义模板标记来检查A.project等是否存在,但我不确定这是否是最好的方法。你知道吗

有没有更好的办法?你知道吗


Tags: 数据pyproject模板数据库app应用程序url
1条回答
网友
1楼 · 发布于 2024-04-25 20:45:56

如果你所寻找的只是在模板呈现时有一些提示是否存在某些数据或某些应用程序,你可以使用一个模板上下文处理器,因为这就是它们的目的-将某些内容加载到每个模板中。你知道吗

我绝对不建议实现模板标记来检索数据,这会打破MVC规则一次,但是在调试缓慢的db查询和其他类似的东西时,您可能会遇到麻烦。你知道吗

如果要在上下文处理器中执行一些db查询,请记住,每次呈现模板时都会执行这些查询,即使它不需要这些数据。你知道吗

为了节省处理时间,可以使用某种手动缓存和适当的失效方案。你知道吗

如果您使用的是基于类的视图,另一种方法是实现一个mixin,它只将您需要的数据添加到上下文中(在get_context_data方法中)。如果要这样做,请确保调用super,以获取通常要扩展的类基视图的上下文。你知道吗

相关问题 更多 >