Django不记得上下文

时间:2015-02-03 15:58:25

标签: python django apache

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

Django开始了,但它表现得很奇怪。我有以下代码:

someVar = None

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

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

我将此方法映射到URL。当我打电话给第一个'方法,然后'秒',预期输出被修改',但实际上它是'无'

似乎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>

1 个答案:

答案 0 :(得分:2)

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

如果您真的需要在请求之间共享数据,无论哪个进程为它们提供服务,您都应该使用更持久的位置,例如会话或数据库。