2017-10-08 76 views
0

所以我在播放我的Django應用程序中的mp3文件時遇到了問題。在我的Django 1.11模板中播放mp3文件

settings.py - 增加MEDIA_ROOT和MEDIA_URLS

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

models.py - 我有一個簡單的音頻類設置

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) 

views.py - 這是我的看法

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

audio_list.html - 這是我的模板

{% 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 %} 

我可以進去,並添加音頻文件,並將其上傳到以下目錄

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

通過以下設置HTML5的音頻播放器甚至不顯示了。當我檢查頁面的源時,我得到以下內容:

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

我梳理了Django文檔。我搜遍了谷歌。我不認爲這會很難拉出一個文件路徑並播放它。

任何意見將不勝感激!

編輯:加入我的網址文件

# 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'), 
] 

回答

0

第一:你需要讓所有音頻文件

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 

然後,你需要的網址:

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

更改目錄的權限以便在頁面上查看玩家。

chmod a+r -R uploads 
+0

html5播放器仍然不顯示。我認爲這可能與我的網址設置有關。我會將這些文件附加到我原來的帖子中。 –

+0

當我檢查頁面的來源,我可以看到路徑顯示。 該文件位於該目錄中,但播放器不顯示。 –

+0

@BrentPhillips,您需要該目錄的權限才能查看播放器,查看更新後的答案。如果解決方案有幫助,請選擇答案。如果仍然有問題,請通過下面的評論告訴我。 –