python - 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)
解决方案
您应该使用静态文件夹来存储静态内容,例如图片、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)
推荐阅读
- django-channels - Django 频道:消息在一个频道中重复
- cron - Authsession 值未出现在计划的批处理作业中
- vb.net - 需要查询或数据表来查找两个表之间的差异
- quicksort - Quicksort - 分区伪代码检查索引超出范围?
- java - 如何将实体保存在具有唯一约束的表中
- reactjs - React API 数据未显示在 JSX 中
- powershell - PowerShell - 从组合框中获取值,选定的值为空
- c# - Process.StartInfo.RedirectStandardInput 使用过多 CPU
- java - 转换列表
字符串然后返回列表 - java - Java 线程转储:并非所有活动线程都被打印