Así que quiero servir un par de mp3 de una carpeta en /home/username/music
. No pensé que esto sería tan importante, pero estoy un poco confundido sobre cómo hacerlo usando vistas genéricas y mi propia URL.Django: sirviendo una descarga en una vista genérica
urls.py
url(r'^song/(?P<song_id>\d+)/download/$', song_download, name='song_download'),
El ejemplo que estoy siguiendo se encuentra en la sección de visión genérica de las documentaciones de Django: http://docs.djangoproject.com/en/dev/topics/generic-views/ (Es todo el camino en la parte inferior)
no estoy 100 % seguro de cómo adaptar esto a mis necesidades. Aquí está mi views.py
def song_download(request, song_id):
song = Song.objects.get(id=song_id)
response = object_detail(
request,
object_id = song_id,
mimetype = "audio/mpeg",
)
response['Content-Disposition'= "attachment; filename=%s - %s.mp3" % (song.artist, song.title)
return response
De hecho, estoy en una pérdida de cómo transmitir que yo quiero que escupir mi mp3 en lugar de lo que lo hace ahora que es dar salida a una .mp3 con toda la corriente páginas html contenidas ¿Debería mi plantilla ser mi mp3? ¿Debo configurar Apache para que sirva los archivos o Django puede recuperar el mp3 del sistema de archivos (permisos adecuados, por supuesto) y publicarlo? Si necesita configurar Apache, ¿cómo se lo digo a Django?
Gracias de antemano. Todos estos archivos están en HD, así que no necesito "generar" nada en el lugar y me gustaría evitar que se revele la ubicación de estos archivos si es posible. Un simple/canción/1234/descarga sería fantástico.
Bueno, maldición, supongo que me obsesioné en hacer que funcione con una vista genérica. No pensé por qué siquiera la necesitaba. Exactamente lo que necesitaba, ¡gracias! – TheLizardKing
mp3 son archivos binarios, así que usando el modo de lectura de archivo 'rb' en lugar de 'r' – iMath
¡Busqué todo esto! ¡Gracias por esto! – adbarads