【问题标题】:Django - Static images renderDjango - 静态图像渲染
【发布时间】:2020-09-22 12:11:32
【问题描述】:

我有一个模板可以渲染每个产品的图片。 但结果 - 它的 URL 在路径中有额外的“静态”

这样 - 127.0.0.1:8000/static/static/photos/product1.png。

应该只是 127.0.0.1:8000/static/photos/product1.png

有什么方法可以正确地做到吗?

model.py 将其保存到“静态/照片”

class Product(models.Model):
    title = models.CharField(max_length=20)
    photo = models.ImageField(upload_to='static/photos', default='http://placehold.it/700x400')

views.py

from django.shortcuts import render
# Create your views here.
from .models import Category, Product

def product_list(request):
    queryset = Product.objects.all()
    context = {"object_list": queryset}
    return render(request, "product_list.html", context)

template.html 正在关注

{% load static %}

{% for instance in object_list %}
    <p><img src="{% static instance.photo %}" /></p>
{% endfor %}

【问题讨论】:

  • 上传的文件与静态文件无关,您需要使用MEDIA_ROOTMEDIA_URL,因为静态文件用于样式表或 JavaScript 之类的东西。
  • 但是如果我需要在我的模板中使用上传的图片怎么办?有什么方法可以渲染它而不将其存储在静态中?
  • 看看docs.djangoproject.com/en/3.1/topics/http/file-uploads。它涵盖了整个主题。

标签: django static django-templates


【解决方案1】:

改变这个

{% for instance in object_list %}
    <p><img src="{% static instance.photo %}" /></p>
{% endfor %}

 {% for instance in object_list %}
    <p><img src="{% static instance.photo.url %}" /></p>
 {% endfor %}

【讨论】:

    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多