Django WSGI 应用程序在子目录中吗?

Django WSGI 应用程序在子目录中吗?

最近,我想将我的一个 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/unknownhello.wsgiunknownhello.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/,配置就可以正常工作。

相关内容