python - 如何将媒体目录中的图像显示到模板中? Django

标签 python django django-templates

我正在使用 Django 创建我自己的管理面板。 但是,如果我尝试显示从 Django 管理面板上传的图像,浏览器会告诉我找不到该图像。

我已将 MEDIA_URL 和 MEDIA_ROOT 添加到 settings.py,但如果我获取并尝试打印此变量,我在模板中看不到任何内容。

settings.py
MEDIA_ROOT = '/'
MEDIA_URL = '/media/'
models.py
class HomePhoto(models.Model):
    image_path = models.ImageField(upload_to='media/home/photos/', null=False, blank=False)
    home = models.ForeignKey(Home, on_delete=models.CASCADE, related_name='home_photos', null=False, blank=True)
views.py
...
def get_context_data(self, **kwargs):
       context = super(HomeDetailView, self).get_context_data()
       context['title'] = context['home'].address
       context['home_photos'] = home_models.HomePhoto.objects.filter(home=context['home'].pk)
       return context
template.html
{% load static %}
{% get_media_prefix as MEDIA_URL %}
{% block content %}
...
{% for photo in home_photos %}
    <div class="{% if forloop.first %}active{% endif %} item" data-slide-number="0">
        <img src="{{ MEDIA_URL }}{{ photo.image_path }}">
    </div>
{% endfor %}
...
{% endblock %}


最佳答案

根据 Django 的文档,关于 MEDIA_ROOTmanaging files , METDIA_ROOT 应该具有服务器文件系统到媒体文件夹的绝对路径。 “/”表示 Linux 文件系统的根目录。以下是两种正确的配置方法。

settings.py
# In case media folder is in your project folder
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# In case media folder is at different location, likes /var/www/media
MEDIA_ROOT = '/var/www/media'

关于python - 如何将媒体目录中的图像显示到模板中? Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171971/

相关文章:

Python Django 模板和测试变量是否为空或空字符串

python - 计算文件中所有可能的长度为 n 的子字符串? (不包括空格)

python - 多服务器生产环境中的django-celery

python - Shopify Python API : How to serialize products list to JSON?

ruby-on-rails - 用于 Web 应用程序注册、登录、管理密码的现有库?

django - 选择测试数据库?

python - 在 Django 模板中使用 with 和 add 组合变量失败

html - 多次加载 Django 静态标签会影响性能

python - 如何添加不等长列表中的每个元素?

image - 这种裁剪算法更优雅的改写是什么? (在 Python 中)