使用mod_wsgi运行Django教程示例?

3
我安装了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 示例?

我找到了这个示例,它有一个简单的例子。

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”的教程中的原始django示例,但在修改后的示例中使用mod_wsgi时遇到了错误。
apache2 / log文件如下所示。
[Wed Nov 24 09:02:41 2010] [error] [client 127.0.0.1] ImportError:无法导入设置'mysite.settings'(它是否在sys.path上?它是否有语法错误?):没有名为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()

我没有设置mysite.settings。 - Ignacio Vazquez-Abrams
@Ignacio Vazquez-Abrams:我本应写道我不知道如何设置设置。 - prosseek
mysite.settings 指的是 YourProjectName.settings。这是 Python 获取 settings.py 文件内容的方式。 - Evan Porter
请以纯文本形式提供翻译。 - webjunkie
1个回答

2
你需要做的是将项目目录或包含项目的目录添加到sys.path中,然后如果你选择了后者,将设置指向mysite.settings
编辑: "Django设置" 编辑2: 如何设置Django设置模块 编辑3:
设置模块应该是模块,而不是文件名。如果是'settings',则不需要设置它。

你能给我一个例子,如何“指向mysite.settings的设置”吗?我已经添加到我的OP中。 - prosseek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接