如何在Django中链接视图?

问题描述:

我正在执行James Bennett的优秀django-contact-form,但遇到了一些障碍。我的联系页面不仅包含表单,还包含其他平面页面信息。如何在Django中链接视图?

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

我听说过这是可能的,但我似乎无法弄清楚如何使它工作。我创建了自己的包装视图,称为联系人表单视图,并试图检查HttpResponse对象以获取可追加的属性,但似乎无法弄清楚它是哪一个。

编辑:詹姆斯评论说,最新的代码可以在BitBucket找到here

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

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

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

你或许可以添加您的各条“平页面信息”上下文。

+0

问题在于我在技术上没有对视图的源访问权限,所以我无法更改其使用不同上下文的响应。例如,如果源位于*存储库中并被多个项目使用,或者可能位于.egg文件中,则会出现这种情况。 – Soviut 2009-02-03 03:19:55

+0

上下文处理器不在您的视图功能中。它们与所有视图函数是分开的,并在settings.py文件中引用。 – 2009-02-03 11:08:46

上下文处理器是你在想什么。而render_to_response是无关紧要的。所需的信息是如果视图使用RequestContext或不是,因为这是激活上下文处理器。

除了这些,没有办法为“链”的意见添加到背景 - 你可以在另外一个包裹查看和更改数据进入它,但你不能添加上下文的方式。