非ルートフォルダーの下でTwistedとDjangoを使用して静的ファイルを提供する
質問
TwistedからDjangoにアプリケーション( Sage )を移行しています。
静的ドキュメントは現在 / doc / static
で提供されていますが、ライブ(オンザフライで作成された)ドキュメントは / doc / live
で提供されています。
Twistedを使用して / doc / static
のみを提供し、Djangoが残りの / doc / *
を提供することは可能ですか?
解決
実行できますが、優雅さの度合いは変化します...これは移行のためであると理解しているので、それほど美しくなくてもかまいません。
静的ファイルを提供するTwistedが必要な場合、それらのファイルのプロキシスルーをdjangoで一緒にハックするか、全体の前に何かを投げる必要があります。また、VPATHを備えたPerlbalはこれを行うことができます。URLの正規表現を取得し、適切なサービスにヒットさせます。
Twistedを使用する必要がない場合は、さまざまな方法があります。静的ファイルを提供するために、Perlbalまたは同様のものを引き続き使用できますが、いずれにせよ、長期的にはそうする必要があります。
他のヒント
こちらをご覧くださいTwistedの上でDjangoを実行する方法に関するリンク:(ブログからコピーされた指示)
- easy_install Twisted
- easy_install Django
- 利益!
- django-admin.py startproject foo
-
次のコードを使用してmyapp.pyを作成します。
django.core.handlers.wsgiからWSGIHandlerをインポート
application = WSGIHandler()
-
DJANGO_SETTINGS_MODULE = foo.settingsをエクスポート
- twistd -no web --wsgi = myapp.application
コメントのさらに下には、リクエストがDjangoに渡される前にTwistedでメディアを直接提供する方法の例もあります:
メディアファイルを処理するには、 " static.File" 「twisted.web」からのような so:staticrsrc = static.File(os.path.join(os.path.abspath("。")、 " mydjangosite / media")))を追加します そのリソースをルートリソースに そのように:root.putChild(" media&quot ;, staticrsrc)
免責事項:私はこれを自分で試したことはありませんが、ブログの記事はごく最近のものであり、著者は質問に回答しても構わないと思っています。
編集:この件については、それを機能させる方法についての説明が記載された別の記事もあります。こちら。これには、Twistedを使用した静的ファイルのサーバーが直接含まれているようです。
質問を誤解していない限り、/ doc / static URLをDjangoに到達する前に(つまり、Apache /プロキシレベルで)Twistedに単純に書き換えてみませんか?