Назад | Перейти на главную страницу

Приложение 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. Второй hello текст, который появляется после /hello/ в URL. Для 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()

Я сделал что-то не так? Как мне это исправить?

Синтаксис файла в /var/www/hello/hello.wsgi смутил меня. Видимо, если указать на /var/www/hello/hello.wsgi/ вместо этого конфигурация работает нормально.