如何在Django中链接视图?

时间:2009-02-03 01:13:27

标签: python django extension-methods django-views wrapping

我正在实施James Bennett的优秀django-contact-form,但遇到了障碍。我的联系页面不仅包含表单,还包含其他平面页面信息。

如果不重写联系表单使用的现有视图,我希望能够包装或链接视图。这样我就可以通过上下文注入一些额外的信息,以便表单和平面页面数据都可以在同一个模板中呈现。

我听说它提到这是可能的,但我似乎无法弄清楚如何让它发挥作用。我创建了自己的包装器视图,称为联系表单视图,并尝试检查HttpResponse对象以查找我可以附加的属性,但我似乎无法弄清楚它是哪个,如果有的话。

编辑: James评论说,最新的代码可以在BitBucket上找到here

3 个答案:

答案 0 :(得分:2)

有一个上下文处理器可以做你想要的。

http://docs.djangoproject.com/en/dev/ref/templates/api/

您可以将各种“平面页面信息”添加到上下文中。

答案 1 :(得分:2)

  1. 编写一个包装器,使用该URL查找相应的平面页面对象。
  2. 从你的包装器中调用(并从中返回响应)联系表单视图,在extra_context参数中传递平面页面(除此之外,正是为了这种用例)。
  3. 没有第三步。

答案 2 :(得分:1)

上下文处理器就是您的想法。而render_to_response则无关紧要。所需的信息是视图是否使用RequestContext,因为这是激活上下文处理器的原因。

除此之外,没有办法“链接”视图以添加到上下文 - 您可以将一个视图包装在另一个视图中并更改进入它的数据,但是不能添加到上下文方式。