如何覆盖 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 模板渲染方法处理的主要内容,如果未能解决你的问题,请参考以下文章