如何覆盖 django 模板渲染方法处理

Posted

技术标签:

【中文标题】如何覆盖 django 模板渲染方法处理【英文标题】:how to overwrite django template render method handling 【发布时间】:2010-11-29 00:00:09 【问题描述】:

在我的应用程序中,我定期发送 cron 和后台任务请求以刷新页面缓存。虽然从视图发送 force_refresh kwarg 很容易,但没有明显的方法可以将 force_refresh kwarg 发送到从模板访问的方法。我正在使用很多这些方法,而从视图开始调用所有这些方法只会让事情变得更加复杂。

所以我一直在尝试覆盖模板渲染方法,以便在访问方法时传入 force_refresh kwarg,如果给定的响应是针对后台任务请求的。

我意识到将这个 kwarg 添加到所有被调用的方法中可能只会导致意想不到的问题,如果您对更好的处理方法有任何建议,那么 try/except ArgumentError 块不会完全是一个可靠的解决方案这(希望除了从视图中访问这些方法中的每一个!),听到它们会很有用。

【问题讨论】:

【参考方案1】:

抱歉,您的用例正是视图函数的用途。

在视图函数中,您收集所有数据。由此您可以创建一个包含模板将使用的最新数据的字典。

所有逻辑都在视图中。模板的处理最少。

【讨论】:

我现在已经接受了这一点,尽管我希望至少假设性地看到如何覆盖渲染。我还进行了重构以从视图中调用此方法,这让我进行了一些我应该在不久前进行的重构。 @jamtoday:不要覆盖渲染。必须维护这一点的人永远不会弄清楚你的非标准方法。

以上是关于如何覆盖 django 模板渲染方法处理的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖默认的 django 忘记密码模板?

在 Django 1.8 中覆盖现有的模板标记方法

Django:覆盖和扩展应用程序模板

如何覆盖 Django-allauth 提供的默认模板?

django:我如何实际覆盖管理站点模板

在 django 中覆盖管理模板以添加自定义 javascript