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/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/,配置工作正常。

相關內容