2017-10-08 1 views
0

J'ai donc du mal à lire des fichiers mp3 sur mon application Django.Lecture de fichiers mp3 dans mon modèle Django 1.11

settings.py - Ajout MEDIA_ROOT et MEDIA_URLS

MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') 
MEDIA_URL = '/uploads/' 

models.py - J'ai une configuration simple de la classe audio

class Audio(models.Model): 
    author = models.ForeignKey('auth.User') 
    title = models.CharField(max_length=200) 
    audio_file = models.FileField(upload_to='audio/', blank=True) 
    description = models.TextField() 
    featured_image = models.URLField(max_length=500) 
    created_date = models.DateTimeField(default=timezone.now) 
    published_date = models.DateTimeField(blank=True, null=True) 

de views.py - Voici mon avis

class AudioListView(ListView): 
context_object_name = 'audio' 
template_name = 'media/audio/audio_list.html' 
model = Audio 

audio_list.html - Voici mon modèle

{% block content %} 
{% for aud in audio %} 
<p>Audio Title: {{ aud.title }}</p> 
<img src="{{ aud.featured_image}}" alt=""> 
<hr> 
<audio controls> 
<source src="{{ aud.audio_file }}" type="audio/mp3"> 
</audio> 
<hr> 
<p>Audio Description: {{ aud.description }}</p> 
{% endfor %} 
{% endblock %} 

je peux aller et ajouter un fichier audio et il télécharge dans le répertoire suivant

# myapp -> uploads -> audio -> audio.mp3 

Avec la configuration suivante du lecteur audio html5 ne montre même pas. Quand je vérifie la source pour la page je reçois ce qui suit:

<audio controls> 
<source src="audio/audio.mp3" type="audio/mp3"> 
</audio> 

J'ai parcouru la documentation de Django. J'ai cherché partout google. Je ne pense pas que ce serait si difficile de tirer un chemin de fichier et de le jouer.

Un conseil serait apprécié!

EDIT: Ajouter mes fichiers url

# mainapp/urls.py 
from django.conf.urls import include, url 
from django.contrib import admin 
from django.contrib.flatpages import views 
from home.views import HomeTemplateView 


urlpatterns = [ 
url(r'^admin/', admin.site.urls), 
url(r'', include('home.urls')), 
url(r'^blog/', include('blog.urls')), 
url(r'^media/', include('media.urls')), 
url(r'^about/', views.flatpage, {'url': '/about/'}, name='about'), 
url(r'^contact/', views.flatpage, {'url': '/contact/'}, name='contact'), 
url(r'^donations/', views.flatpage, {'url': '/donations/'}, 
name='donations'),] 

# media/urls.py 
from django.conf import settings 
from django.conf.urls.static import static 
from django.conf.urls import include, url 
from media.views import AudioListView, VideoListView 

urlpatterns = [ 
url(r'^video/$', VideoListView.as_view(), name='video'), 
url(r'^audio/$', AudioListView.as_view(), name='audio'), 
] 

Répondre

0

Première: Vous devez obtenir tous les fichiers audio

class AudioListView(ListView): 
    template_name = 'media/audio/audio_list.html' 
    model = Audio 

    def get_context_data(self, **kwargs): 
     context = super(AudioListView, self).get_context_data(**kwargs) 
     context['audio'] = Audio.objects.all() 
     return context 

alors vous avez besoin url:

<source src="{{ aud.audio_file.url }}" type="audio/mp3"> 

Modifier Autorisation du répertoire pour voir le joueur à la page.

chmod a+r -R uploads 
+0

Le lecteur html5 n'apparaît toujours pas. Je pense que cela pourrait avoir quelque chose à voir avec la configuration de mon URL. Je vais ajouter ces fichiers à mon message d'origine. –

+0

lorsque je vérifie la source de la page, je peux voir que le chemin apparaît. Le fichier se trouve dans ce répertoire mais le lecteur n'apparaît pas. –

+0

@BrentPhillips, Vous avez besoin d'une permission sur ce répertoire pour voir le joueur, Regardez la réponse mise à jour. Si la solution a aidé, veuillez sélectionner la réponse. Si encore, un problème me le faire savoir en commentant ci-dessous. –