【问题标题】:Obtaining a RequestContext for a templatetag included on every page获取包含在每个页面上的模板标签的 RequestContext
【发布时间】:2011-03-14 05:35:08
【问题描述】:

我有一个生成表单的模板标签,因此这需要{% csrf_token %} 以确保安全,而这又需要RequestContext 对象而不是标准的Context 对象。

现在,相关的特定模板标签/表单包含在每个页面的标题中。目前每个页面都没有render_to_response 带有RequestContext 对象。

有什么方法可以绕过这个问题,而无需更改整个站点中的每个视图以通过RequestContext

提前致谢。

【问题讨论】:

    标签: django csrf requestcontext


    【解决方案1】:

    尽管可能有一些解决方法,但最好的做法肯定是在任何地方添加 RequestContext。这对其他中间件也有好处。

    但是还有一个遗留方法,它将在 Django 1.4 中删除,它不需要您更改所有视图。除非您别无选择,否则我建议您不要这样做。

    http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-method

    【讨论】:

    • 还有另一种方法:忽略该表单的 csrf:docs.djangoproject.com/en/1.2/ref/contrib/csrf/#exceptions
    • @alex - 不幸的是,这是一个基于视图的异常,我的问题是模板标签中的表单。
    • @orangutancloud - 在任何地方使用 RequestContext 时我需要注意什么 - 安全性、性能或其他方面?谢谢。
    • @Nick,但是必须有一个视图来处理表单的 POST 数据。所以那个装饰器是为了那个视图。
    • @alex,RequestContext 是安全的,并且应该非常快,只要您注意编写和添加的任何自定义上下文处理器也是快速且安全的。 django 上下文处理器已经快速且安全。除非您要进行一些极端的优化,否则这根本不会减慢速度。
    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2013-04-14
    相关资源
    最近更新 更多