Обслуживание статических файлов с помощью Twisted и Django в некорневых папках - PullRequest
2 голосов
/ 10 сентября 2009

Я нахожусь в процессе переноса приложения ( Sage ) из Twisted в Django.

Статическая документация в настоящее время обслуживается в /doc/static, тогда как живая (построенная на лету) документация подается в /doc/live.

Можно ли использовать Twisted для обслуживания только /doc/static, оставив Django для обслуживания остальных /doc/*?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2009

Посмотрите эту ссылку о том, как запустить Django поверх Twisted: (инструкции скопированы из блога)

  1. easy_install Twisted
  2. easy_install Django
  3. Profit!
  4. django-admin.py startproject foo
  5. Создайте myapp.py со следующим кодом:

    из django.core.handlers.wsgi import WSGIHandler

    application = WSGIHandler ()

  6. export DJANGO_SETTINGS_MODULE = foo.settings

  7. twistd -no web --wsgi = myapp.application

Далее в комментариях есть также пример того, как обслуживать СМИ напрямую с помощью Twisted до передачи запроса в Django:

Для обработки медиа-файлов просто используйте "static.File" из "twisted.web", как итак: staticrsrc = static.File (os.path.join (os.path.abspath ( ""), "mydjangosite / media")), а затем добавить этот ресурс в ваш корневой ресурс вроде так: root.putChild ("медиа", staticrsrc)

Отказ от ответственности: я сам не пробовал, но статья в блоге кажется совсем новой, и автор готов ответить на вопросы.

РЕДАКТИРОВАТЬ: Существует также другая статья, написанная на эту тему с инструкциями о том, как заставить его работать здесь , которая, кажется, включает в себя серверную обработку статических файлов с Twisted напрямую.

2 голосов
/ 10 сентября 2009

Это может быть сделано, степень элегантности просто меняется ... Я понимаю, что это для перехода, поэтому, возможно, он не должен быть очень красивым.

Если вам нужно, чтобы Twisted обслуживал статические файлы, то вам нужно либо взломать в django прокси для этих файлов, либо бросить что-то перед всем этим. Также Perlbal с VPATH может сделать это, он возьмет регулярные выражения URL и заставит их обращаться к нужным сервисам.

Если вам не нужно использовать Twisted, есть много разных способов сделать это. Вы все еще можете использовать Perlbal или что-то подобное для обслуживания статических файлов, что в любом случае должно быть в конечном итоге.

0 голосов
/ 10 сентября 2009

Если я не понял вопрос, почему бы просто не переписать / doc / static url в Twisted до того, как он даже достигнет Django (т.е. на уровне Apache / proxy)?

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

...