图像和声音(媒体)没有在django上显示

时间:2016-06-16 15:17:50

标签: python django media

我正在尝试在django中播放音频,但它无法找到音频文件。我已经设置了MEDIA_URL和MEDIA_ROOT但它仍然无效。请帮我。 以下是代码段

settings.py

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

urls.py

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$',home),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT

home.html的

{% extends "layout/base.html" %}
{% block content %}
    <h1>  Sound Assessment Toolset  </h1>
    <audio src="{{MEDIA_URL}}master_sound/piano.mp3"></audio>
    <img src="{{ MEDIA_URL }}images/batman.jpg"/>
{% endblock %}

Image of Project Directory

日志文件:

Django version 1.8.7, using settings 'Sound_Assessment.settings'
Starting development server at http://127.0.0.1:8800/
Quit the server with CONTROL-C.
[17/Jun/2016 15:18:43] "GET / HTTP/1.1" 200 746
[17/Jun/2016 15:18:43] "GET /images/batman.jpg HTTP/1.1" 404 2321
[17/Jun/2016 15:18:43] "GET /master_sound/piano.mp3 HTTP/1.1" 404 2336
[17/Jun/2016 15:18:43] "GET /images/batman.jpg HTTP/1.1" 404 2321

3 个答案:

答案 0 :(得分:0)

您实际上并未在MEDIA_URL下请求这些元素,您可以从日志文件中看到。

那是因为你还没有将这些变量传递给模板,所以它们被忽略了。

答案 1 :(得分:0)

您需要在settings.py文件中添加媒体模板上下文处理器:

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.media',
            ],
        },
    },
]

然后您的模板中会有{{ MEDIA_URL }}

答案 2 :(得分:0)

我从这个帖子得到了答案 Django MEDIA_URL and MEDIA_ROOT

我所做的是在Template Context_Processor里面的settings.py中添加了这行“django.core.context_processors.media”。

这里

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'app/templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                 ...
                 'django.core.context_processors.media',
            ],
        },
    },
]