わかりました。Djangoを介してメディア ファイルを提供することはお勧めできません。ただし、Django モデルによるきめ細かいアクセス制御を使用して「静的」ファイルを提供したい状況にあります。
例: 私は自分の映画ライブラリを Web 経由で自分自身に提供したいと考えています。私はよく旅行に出かけますが、インターネットにアクセスできれば、どこにいても自分の映画を視聴できるようにしたいと考えています。そこで、DVD をリッピングしてサーバーにアップロードし、この単純な Django アプリケーションを埋め込み可能なビデオ プレーヤーと組み合わせて構築します。
法的な影響を避けるために、適切な権限を持つログオン ユーザー (つまり、私と同じ世帯に住んでいて、私のように都合のよいときに本物の DVD にアクセスできる人) だけがアクセスできるようにしたいと思いますが、他のユーザー (つまり、私のブログにコメントを投稿した人) に送信し、HTTP 404 を返します。
現在、これらのファイルを Apache を使用して直接提供することmod_wsgi
はかなり面倒です。なぜなら、メディア ファイル (つまりhttp://video.mywebsite.com/my-favorite-movie/
) に対する HTTP 要求が届いたときに、相手が適切な権限を持っていることをユーザー データベースに対して検証する必要があるからです。
質問: Django ビューを介してメディア ファイルを直接提供しなくても、この効果を実現できますか? 私のオプションは何ですか?
私が考えたことの 1 つは、セッション ID とビデオのスラッグを受け取り、ユーザーがビデオ ファイルにアクセスできるかどうか (またはアクセスできないかどうか) を示すブール値を返す簡単なスクリプトを作成することです。mod_wsgi
次に、要求された URL にアクセスする前にこのスクリプトを実行するように何らかの方法で要求し、スクリプトが失敗した場合は HTTP 404 を返します。ただし、これが可能かどうかはわかりません。
編集: この質問を投稿すると、検索に関する私のアイデアのいくつかが明確になり、mod_python
's file wrapper extensionに出会いました。それが実行可能なソリューションであることを検証するのに十分な経験を持っている人はいますか?