5

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

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

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

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

4

3 回答 3

2

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

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

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

于 2009-02-03T01:18:19.487 回答
2
  1. 编写一个包装器,它使用 URL 来查找适当的平面页面对象。
  2. 从您的包装器中,调用联系表单视图(并从中返回响应),在extra_context参数中传递平面页面(除其他外,正是这种用例)。
  3. 没有第三步。
于 2009-02-04T07:14:23.573 回答
1

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

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

于 2009-02-03T03:30:11.560 回答