Приложение Django WSGI в подкаталоге?

Приложение Django WSGI в подкаталоге?

Недавно я хотел поместить одно из моих приложений WSGI в подкаталог, чтобы другие каталоги, содержащие различные скрипты, работали как и прежде. Чтобы сделать это, я добавил следующую директиву в свое httpd.confглобальное пространство имен (также пытался поместить ее в VirtualHost, что дало тот же эффект):

WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi

Затем я запустил django-admin startproject hello. После перезагрузки Apache configs я могу подтвердить, что это 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()

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

решение1

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

Связанный контент