我正在尝试将图像存储在数据库中,然后将它们显示在 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
答案 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/... 以提供静态/媒体文件。