Python/Django中的Global Request变量是否可用?

sca*_*pus 11 python django

我写了一个插件,发送一个信号来激活我的代码.但是,它不会将用户请求对象发送到我的代码.我正在寻找一种方法来检索当前请求而无需修改主应用程序.我找不到任何与全局请求相关的文档(比如$_SERVER['REMOTE_ADDR']在PHP中).

我想知道在Python/Django中是否有任何变量可以做.

Ned*_*der 18

Django不提供全局请求对象(它实际上是本地线程,而不是全局线程).但是您可以使用一些技术来获得相同的效果:http://nedbatchelder.com/blog/201008/global_django_requests.html


Nik*_* B. -1

据我所知,您可以使用多种方法来定义 Django 视图,例如:

def detail(request, some_param):
  # [...]
Run Code Online (Sandbox Code Playgroud)

该参数request包含有关 HTTP 请求的信息。request.META['HTTP_X_FORWARDED_FOR']例如,返回客户端的 IP 地址。

如果您的插件与请求有关,它的类和函数可能会从您的视图中实例化/调用。这意味着您需要将当前对象传递给它,因为拥有全局request请求对象是没有意义的。在 PHP 中,这是可能的,因为每个请求都会导致整个代码从头开始执行,但在 Django 中,请求由服务器分派并使用对象在框架中传递。另请参阅Django 文档的这一部分以获取更多信息。HttpRequest