用mod_wsgi运行Django教程示例?

时间:2010-11-24 02:34:31

标签: python django mod-wsgi

我安装了wsgi(mod_wsgi),可以通过调用http://localhost/myapp来运行简单的应用程序。

WSGIScriptAlias /myapp /Library/WebServer/Documents/wsgi/scripts/myapp.wsgi
def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World! WSGI working perfectly!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

如何运行django示例?

我发现this example有一个简单的例子。

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'my.settings' # ???

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
mysite/
    __init__.py
    manage.py
    settings.py
    urls.py

Django生成了三个python文件,我看到一个settings.py有设置信息。 该项目位于'/ ABC / DEF / mysite'目录中。

我按如下方式修改了代码,并将其命名为myapp.wsgi。

import os
import sys

sys.path.append('/ABC/DEF/mysite') 
sys.path.append('/ABC/DEF')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

即使我可以运行使用“python manage.py runserver 8080”的the tutorial中的原始django示例,但运行带有mod_wsgi的修改示例时出错。

apache2 / log文件包含以下内容。

[Wed Nov 24 09:02:41 2010] [error] [client 127.0.0.1] ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings

据我所知,目录/项目名称是mysite,它有settings.py。目录在sys.path中。所以,我不知道为什么找不到mysite.settings。

我的myapp.wsgi出了什么问题?

解决

以下代码正常。 而我修改的另一件事是django项目不应该在我的主目录中,当我将项目移动到www doc目录时,一切正常。

import os
import sys

mysite = 'SOMEWEHRE/django'
if mysite not in sys.path:sys.path.insert(0,mysite)
mysite = 'SOMEWEHRE/scripts'
if mysite not in sys.path:sys.path.insert(0,mysite)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

1 个答案:

答案 0 :(得分:2)

您需要做的是将项目目录或项目所在的目录添加到sys.path,然后将设置指向mysite.settings(如果您已完成后者)。

修改

"Django settings"

编辑2:

How to set the Django settings module

编辑3:

设置模块应该是模块,而不是文件名。如果它是'settings',那么您不需要设置它。