首页 > 解决方案 > MEDIA_URL 在 Django 模板中不起作用

问题描述

我正在 Django 3 中构建一个项目,但图像没有在文件中链接。

所有图像都存储在一个名为 media 的文件夹中,例如,这是我的徽标的 HTML -

<a class="navbar-brand" href="{% url 'index' %}">
<img src="{{ MEDIA_URL}}logo.png" height="70" class="pr-4" alt="Site logo">

然后我在我的设置中有这个 -

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

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

在我的项目级 URLS 中,我得到了 -

from django.conf import settings
from django.conf.urls.static import static

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

标签: pythondjangotemplates

解决方案


您应该使用静态文件夹来存储静态内容,例如图片、css、js 等……而媒体则存储动态内容,例如用户上传的内容、头像图片……然后你应该使用这个模板标签:

{% load static %}

<a class="navbar-brand" href="{% url 'index' %}">
<img src="{% static 'logo.png' %}" height="70" class="pr-4" alt="Site logo">

如果您仍然想使用媒体文件夹,您需要在您的 urls.py (从此处提取)中添加它,以使其在本地正常工作:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

推荐阅读