我正在本地运行一个网站开发环境,使用Apache2作为Web服务器,用Django构建了该网站。我想在特定页面添加音轨。我曾经有一个显示图片的页面,我采取了相同的方法尝试播放音轨,但没有成功。 URL 看起来是正确的,是否需要对 FileFields 与 ImageFields 做出任何调整。我知道有一些 jQuery 插件可以播放音频,但我对 Django 和 Web 开发很陌生,所以我想先让这个基础版本工作再转向更高级的方法。
相关代码:
models.py
相关代码:
models.py
from django.db import models
class Artist(models.Model):
artistName = models.CharField(max_length = 30)
artistInfo = models.TextField()
def __unicode__(self):
return self.artistName
class Album(models.Model):
albumName = models.CharField(max_length = 30)
artist = models.ForeignKey('Artist')
date = models.DateTimeField('Release Date')
albumInfo = models.TextField()
albumArt = models.ImageField(upload_to="images/albumart/")
def __unicode__(self):
return self.albumName
class Song(models.Model):
songName = models.CharField(max_length = 30)
artist = models.ForeignKey('Artist')
album = models.ForeignKey('Album')
audio_track = models.FileField(upload_to="songs/")
def __unicode__(self):
return self.songName
specificsong.html
{% extends "base.html" %}
{% block content %}
<div id="singlesong">
<p>Name: {{ song }}</p>
<p>Artist: <a href="/artists/{{ song.artist }}/">{{ song.artist }}</a></p>
<p>Album: <a href="/albums/{{ song.album }}/">{{ song.album }}</a></p>
<p><audio controls="controls">
<source src="{{ song.audio_track.url }}" type="audio/mpeg" />
</audio>
</div>
{% endblock %}
views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
from Radio.models import Song, Artist, Album
def SpecificSong(request, songname):
song = Song.objects.get(songName = songname)
context = {'song':song}
return render_to_response('specificsong.html',context, context_instance=RequestContext(request))
urls.py
from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
(r'^songs/$', 'Radio.views.SongsAll'),
(r'^songs/(?P<songname>.*)/$', 'Radio.views.SpecificSong'),
(r'^artists/(?P<artistname>.*)/$', 'Radio.views.SpecificArtist'),
(r'^albums/(?P<albumname>.*)/$', 'Radio.views.SpecificAlbum'),
(r'^register/$', 'listener.views.ListenerRegistration'),
(r'^login/$', 'listener.views.LoginRequest'),
(r'^logout/$', 'listener.views.LogoutRequest'),
(r'^resetpassword/passwordsent/$', 'django.contrib.auth.views.password_reset_done'),
(r'^resetpassword/$', 'django.contrib.auth.views.password_reset'),
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),
(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),
(r'^profile/$', 'listener.views.Profile'),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
settings.py (简称)
MEDIA_ROOT = '/home/kyle/Downloads/Django-1.5.1/radioSite/media/'
MEDIA_URL = '/media/'
urls.py
。 - Scott Woodall<source src="{{ song.audio_track.url }}" type="audio/mpeg" />
的输出,以及您的settings.MEDIA_URL
和settings.MEDIA_ROOT
。我是否正确地假设您想要上传音频文件到settings.MEDIA_ROOT
并让Apache提供这些文件?您能确认您上传的文件是否被放置在settings.MEDIA_ROOT
目录中? - Scott Woodall+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
。需要配置Apache来处理任何/ media / *
URL路径,而不是Django。 - Scott Woodall