2

特定のユーザーが特定のメディアにアクセスできるようにするDjangoサーバーをセットアップしたいと思います。これはそれほど難しいことではないと確信しており、私は少しばかげているだけです。

たとえば、USER1がJPEG1、JPEG2、およびJPEG3にアクセスできるが、JPEG4にはアクセスできないようにし、USER2がJPEG3およびJPEG4にアクセスできるようにします。

[Djangoを使用してメディアを提供するために火を燃やす必要があることはわかっていますが、それは現在私が行っていることです。実際にガスを使い始めたら、それを切り替えます。]

4

3 に答える 3

3

Vazquez-Abrams リンクに示すように、リクエストでファイルを返すことにより、django を使用してファイルを送信できます。

ただし、効率のために、apache で mod_xsendfile (または lighttpd で同様の設定) を使用すると、おそらく最善の結果が得られます。Djangoはそれを送信するのがそれほど速くありません。開発サーバーの静的関数を使用するオプションを維持しながらそうする1つの方法は、http://pypi.python.org/pypi/django-xsendfile/1.0です

どのユーザーがどの jpeg にアクセスできるかについては、おそらく自分で実装する必要があります。簡単な方法は、アクセス権を持つユーザーへの多対多フィールドと、現在のユーザーがそれらのユーザーの中にいるかどうかを確認する機能を備えた Image モデルを作成することです。次のようなもの:

if image.users_with_access.filter(pk=request.user.id).exists():
    return HttpResponse(image.get_file())

もちろん、他の多くのコードを例としてのみ使用します。私は実際に、まさにこの目的のために、自分のプロジェクトで変更された mod_xsend を使用しています。

于 2010-07-20T22:33:10.560 に答える
0

応答を適切にフロブする必要があります。

于 2010-07-20T18:01:52.647 に答える
0

メディアを入れて、ユーザーとそのアクセス許可をチェックするビューを指すように設定http://foo.com/media/blah.jpgできます。media/(?P<file>.*)urls.pyblahview

from you_shouldve_made_one_anyways import handler404
def blahview(request,*args,**kwargs):
  if cannot_use( request.user, kwargs['username'] ): return handler404(request)
  ...

明確にするために、Django を介してメディアを提供することはお勧めしません。

于 2010-07-20T19:57:57.987 に答える