Django 数据库存储的图像仅显示文本描述

时间:2021-05-01 20:21:22

标签: python html django django-models

我正在尝试将图像存储在数据库中,然后将它们显示在 Django 模板上。出于某种原因,Django 只显示 alt(替代 - html 属性)而不是实际图像。

这是模板

{% extends "myapp/layout.html" %}
{% load static %}

{% block body %}
<div class="sidenav">
    <a href="{% url 'index' %}" id="active">Gallery</a>
    <a href="{% url 'about' %}">About</a>
    <a href="{% url 'contact' %}">Contact</a>
</div>
<div class="main">
  <h2>Gallery</h2>
  {% for image in images %}
  <img class="gallery" src="{% static '{{image.image.url}}' %}" alt="{{image.description}}">
  {% endfor %}
</div>
{% endblock %}

这是我的模型

from django.db import models

# Create your models here.
class Image(models.Model):
    image = models.ImageField(upload_to='images/')
    description = models.CharField(max_length=50)

    def __str__(self):
        return "Description of image: " + self.description

这是我看到的 enter image description here

1 个答案:

答案 0 :(得分:1)

这些通常是媒体网址,因此您可以使用:

<img class="gallery" src="{{ image.image.url }}" alt="{{image.description}}">

您需要将有关媒体文件的视图添加到 urlpatterns,如 described in the documentation

或者如果这些真的只包含一个相对于静态文件夹的路径,你可以使用:

<img class="gallery" src="{% static image.image.url %}" alt="{{image.description}}">

不太可能是这种情况。

不管什么注意Django只在调试模式下提供静态/媒体文件(DEBUG = True)。如果您在生产环境中运行它,您将需要配置 apache/nginx/... 以提供静态/媒体文件。