【问题标题】:Django - How do I access request object outside views?Django - 如何访问视图之外的请求对象?
【发布时间】:2017-04-06 17:13:18
【问题描述】:

我在app 目录中有一个名为utilities.py 的文件,其中包含特定于我的应用程序的小实用程序功能。我将从views.py 调用这些函数。问题是某些实用程序函数需要访问request 对象。

有没有办法在视图之外使用request 对象而不将其作为参数传递给实用函数?

【问题讨论】:

  • 不要这么认为......
  • 你为什么不想使用参数?
  • 我想更改一些遗留代码,并将请求作为参数传递,需要大量工作吗?有没有其他办法?
  • 找到并实施一种解决方法,这样您就不必使用参数,这也需要大量工作,并最终导致更糟糕的解决方案。

标签: django request views


【解决方案1】:

我已经自定义了 Context 类,我在 Django 中间件中对其进行了初始化,并将链接放入 request 对象。

两件重要的事情:

  1. Context 类必须继承 threading.local 以防止在多线程中运行应用时请求泄漏。
  2. Context 设为单例。为此,我使用了 Singleton 元类。

所以,这样做你可以在代码的任何部分简单地通过这个调用来获取 Django 请求对象:

request = Context().request

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 2011-04-06
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2016-11-08
    • 2011-11-15
    • 1970-01-01
    相关资源
    最近更新 更多