繁体   English   中英

有没有办法让Django中的每个视图都执行一些操作?

[英]Is there a way to have something execute for every view in django?

我是Django的新手,来自Rails,因此可以在下面解释我的奇怪问题:

我的主布局有一个侧边栏,其中列出了该站点的最新更新。 该主布局用于我的Web应用程序中的每个页面,因此创建的每个模板都扩展了main.html。

对于“最新更新”部分,我只想在每次呈现页面时从发布到Web应用的最新5个更新。 我曾考虑过要在页面加载后通过ajax调用来使侧边栏做到这一点,但我认为这可能不是我的最佳选择。

我还考虑过创建一个标签来为我执行此操作,然后仅在main.html内部调用该标签。 这很简单,但是我必须在标记代码中编写很多HTML,这似乎有点烦人(很多字符串附加等等,除非我错了并且有更好的方法? )

我已经阅读了有关上下文处理器的信息 这似乎正是我想要的,但这似乎可能导致另一个问题,我必须将context_instance传递给每个单独的render_to_response? 这似乎是很多代码重复,如果可能的话,我试图避免这种情况。 有没有一种方法可以使render_to_response始终采用RequestContext对象而不必始终指定它?

还有其他方法可以为每个视图运行一些代码并消除始终向视图传递数据的需要吗?

Django 1.3添加了与render_to_response相同的render快捷方式,但自动使用了RequestContext

模板是适合的位置:具有自定义标签和模板继承的变量既简单又方便。 为了避免附加字符串,请仅对您的标签使用迷你模板:这称为包含标签

我肯定会进行Ajax调用,就像创建一个小视图一样简单,该视图查询模型中的5条最新帖子,将它们序列化为json或xml数据,然后将它们返回到HttpRequest对象中。

您可以使用direct_to_template而不是render_to_response

暂无
暂无

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

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