Pregunta

Quiero configurar un servidor DJANGO que permita a ciertos usuarios acceder a ciertos medios.Estoy seguro de que esto no puede ser tan difícil de hacer y solo estoy siendo un poco tonto.

Por ejemplo, quiero que user1 pueda acceder a JPEG1, JPEG2 y JPEG3, pero no JPEG4, y User2 para poder acceder a JPEG3 y JPEG 4.

[Sé que debería quemarme con fuego por usar Django para servir a los medios de comunicación, pero eso es lo que estoy haciendo en este momento, lo cambiaré cuando comience a correr en Gas.]

¿Fue útil?

Solución

Puede enviar un archivo usando Django al devolver el archivo en la solicitud, como se muestra en el enlace de Vázquez-Abrams.

Sin embargo, probablemente lo haría mejor utilizando MOD_XSENDFILE en Apache (o configuraciones similares en LightTPD) debido a la eficiencia.Django no es tan rápido al enviarlo, una forma de hacerlo, mientras que mantener la opción de usar la función estática del servidor de desarrollo sería http://pypi.python.org/pypi/django-xsendfile/1.0

En cuanto a qué usuario debería poder acceder a qué JPEG, probablemente tendrá que implementar esto usted mismo.Una forma sencilla sería crear un modelo de imagen con un campo de muchos a muchos a los usuarios con acceso y una función para verificar si el usuario actual está entre esos usuarios.Algo a lo largo de la línea de:

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

con un montón de otro código, por supuesto y solo como ejemplo.En realidad, utilizo un mod_xsend modificado en mi propio proyecto para este propósito.

Otros consejos

Solo necesitas a Fob la respuesta apropiadamente.

Puede colocar los medios en http://foo.com/media/blah.jpg y configurar un media/(?P<file>.*) en urls.py para apuntar a un vistazo blahview que verifique al usuario y sus permisos dentro de:

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

Aunque solo para estar claro, lo hago no recomiendo servir medios a través de Django.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top