使用 mod_wsgi 运行 Django 教程示例?
Posted
技术标签:
【中文标题】使用 mod_wsgi 运行 Django 教程示例?【英文标题】:Running Django tutorial example with mod_wsgi? 【发布时间】:2011-05-14 20:41:53 【问题描述】:我安装了wsgi(mod_wsgi),可以通过调用http://localhost/myapp来运行这个简单的应用程序。
WSGIScriptAlias /myapp /Library/WebServer/Documents/wsgi/scripts/myapp.wsgidef 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()
我的网站/
__init__.py
管理.py
设置.py
网址.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()
即使我可以从 the tutorial 运行使用“python manage.py runserver 8080”的原始 django 示例,但在使用 mod_wsgi 运行修改后的示例时出现错误。
apache2/log 文件有以下内容。
[2010 年 11 月 24 日星期三 09:02:41] [错误] [客户端 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 :我应该写我不知道如何设置设置。 mysite.settings 指的是 YourProjectName.settings。这就是 Python 获取 settings.py 文件中内容的方式。 请将解决方案作为答案发布 【参考方案1】:您需要做的是将项目目录或项目所在的目录添加到sys.path
,然后将设置指向mysite.settings
(如果您已完成后者)。
编辑:
"Django settings"
编辑 2:
How to set the Django settings module
编辑 3:
设置模块应该是模块,而不是文件名。如果是'settings'
,则无需设置。
【讨论】:
您能给我举个例子,如何“将设置指向 mysite.settings”吗?我添加到我的 OP 中。以上是关于使用 mod_wsgi 运行 Django 教程示例?的主要内容,如果未能解决你的问题,请参考以下文章
如何仅在一个进程中使用 mod_wsgi 和 django 运行 Apache?
使用 apache2 在 mod_wsgi 上运行 django python 3.4