Django - маршрутизация к сценарию не-Django?(например, простое приложение WSGI / CGI) - PullRequest
0 голосов
/ 12 июля 2011

Как (если это возможно) настроить маршрут в Django, который бы указывал определенный URL-адрес на сценарий, не относящийся к django? Например. Я бы хотел, чтобы /independent обрабатывался очень простым CGI-скриптом, таким как этот:

import os

print 'Status: 200 OK'
print 'Content-type: text/html'
print
for key, value in os.environ.items():
    print key, ': ', value, '<br/>'

Я не пользователь Django (пока, я ... думаю, это на мне), и мне просто нужен способ взломать этот маленький обходной путь в приложении. Итак: это возможно? Если да, то как?

Ответы [ 3 ]

2 голосов
/ 30 июля 2011

Если у вас есть права на изменение настроек Apache, вы можете просто добавить строку над битом, который обрабатывает Django. (Предполагается, что вы запускаете Django через WSGI.) Мой - что-то вроде

<Directory "/cgi-bin/">
    Options +ExecCGI
    AddHandler cgi-script .cgi .py
</Directory>

ScriptAlias /cgi-bin/ /path/to/cgi/dir/

...

WSGIScriptAlias / /path/to/django/site/django.wsgi

<Directory /path/to/django/site>
Order deny,allow
Allow from all
</Directory>
1 голос
/ 30 июля 2011

Другая возможность, о которой упоминали Valkyrie и amjoconn, - обработать ее в файле .htaccess или аналогичной настройке сервера. Например, в моей учетной записи WebFaction у меня Django обрабатывает все , кроме /media/ и /downloads/. Эти два каталога обслуживаются непосредственно сервером nginx.

1 голос
/ 12 июля 2011

Не напрямую. Все URL-адреса Django должны переходить в представление Django, которое может быть вызвано и возвращает ответ.

Вы можете вернуть перенаправление [1] на произвольные URL-адреса. Так что вы должны иметь возможность написать очень простое представление-обертку, чтобы делать то, что вы хотите.

[1] https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#examples

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...