Пользовательские разрешения Django для подачи мультимедиа - PullRequest
2 голосов
/ 20 июля 2010

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

Например, я хочу, чтобы USER1 мог иметь доступ к JPEG1, JPEG2 и JPEG3, но не к JPEG4, иUSER2, чтобы иметь возможность доступа к JPEG3 и JPEG 4.

[Я знаю, что я должен быть сожжен огнем из-за использования Django для подачи мультимедиа, но сейчас я так и сделаю, я его поменяюкогда я действительно начинаю работать на газе.]

Ответы [ 3 ]

3 голосов
/ 21 июля 2010

Вы можете отправить файл, используя django, вернув файл в запросе, как показано в ссылке Васкеса-Абрамса.

Однако вам, вероятно, лучше всего использовать mod_xsendfile в apache (или аналогичные настройки в lighttpd) из-за эффективности. Django не так быстро отправляет его, один из способов сделать это, сохранив возможность использования статической функции сервера dev http://pypi.python.org/pypi/django-xsendfile/1.0

Что касается того, какой пользователь должен иметь доступ к какому jpeg, вам, вероятно, придется реализовать это самостоятельно. Простым способом было бы создать модель изображения с полем «многие ко многим» для пользователей, имеющих доступ, и функцию, чтобы проверить, находится ли текущий пользователь среди этих пользователей. Что-то вроде:

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

С большим количеством другого кода, конечно, и только в качестве примера. Я на самом деле использую модифицированный mod_xsend в своем собственном проекте для этой цели.

0 голосов
/ 20 июля 2010

Вы можете поместить носитель в http://foo.com/media/blah.jpg и настроить media/(?P<file>.*) в urls.py, чтобы он указывал на представление blahview, которое проверяет пользователя и его разрешения в пределах:

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

Хотяпросто чтобы прояснить, я не рекомендую подавать медиа через Django.

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