Django 不记得上下文

Django doesn't remember context

我是 Django 的新手,我正在尝试在新服务器上设置现有项目。

Django 启动了,但它的行为很奇怪。我有以下代码:

someVar = None

def first(request):
    global someVar
    someVar = 'modified'

def second(request):
    return HttpResponse(someVar) # prints 'None'

我将此方法映射到 URL。当我调用 'first' 方法然后调用 'second' 时,预期输出是 'modified',但实际上它是 'None'

似乎 Apache 在每次请求时都会启动应用程序,就像它是某个 cgi 脚本一样。知道为什么会这样吗?

我将 Apache2.2 与 mod_wsgi 和 Django 1.5.9 一起使用。 Django 项目在 Apache 的文档根目录之外。这是 Apache 主机配置文件:

WSGIScriptAlias / /path/mysite/mysite/wsgi.py
WSGIPythonPath /path/mysite

<Directory /path/mysite/mysite>
     <Files wsgi.py>
         Order deny,allow
        Allow from all
    </Files>
</Directory>

模块级变量仅在使用同一进程的请求之间共享。 Apache 几乎肯定会启动多个进程来为您的网站提供服务。如果您的后续请求恰好进入为初始请求提供服务的同一进程,您将看到更改;否则你不会。

如果你真的需要在请求之间共享数据,无论哪个进程为它们服务,你应该使用一个更持久的地方,比如会话或数据库。