最近,我想将我的一个 WSGI 应用程序放入子目录中,以便包含各种脚本的其他目录可以像以前一样工作。为了做到这一点,我在httpd.conf
全局命名空间中添加了以下指令(也尝试将其放入 中VirtualHost
,效果相同):
WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi
然后,我运行了django-admin startproject hello
。重新加载 Apache 配置后,我可以确认http://localhost/hello/
指向 Django“欢迎”屏幕。然后,我进行了编辑,hello/urls.py
在元组中添加了以下行urlpatterns
:
url(r'^hello/', 'hello.views.home'),
接下来,我创建了 hello/views.py,内容如下:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world")
不幸的是,当我尝试访问时http://localhost/hello/hello
,我收到标准的 Apache 404 消息,并且在错误日志中出现以下条目:
[Mon Dec 23 19:49:44 2013] [error] [client 31.182.131.38] Target WSGI script not found or unable to stat: /var/www/hello/hello.wsgihello
注意hello.wsgihello
。第二个是URL 中hello
后面出现的文本。对于,它将是。这是我的:/hello/
http://localhost/hello/unknown
hello.wsgiunknown
hello.wsgi
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'hello.settings'
path = '/var/www/hello'
if path not in sys.path:
sys.path.append(path)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我做错了什么吗?我该如何解决?
答案1
文件中的语法/var/www/hello/hello.wsgi
让我很困惑。显然,如果指向/var/www/hello/hello.wsgi/
,配置就可以正常工作。