为什么 Django 会无缘无故地从我的模板中随机删除图像

问题描述 投票:0回答:1

Django 总是用一些完全没有必要的行为来困扰我。我

我有一个源自 Django 模型的媒体文章模板。除了图像之外,一切都很棒,而且看起来很棒。

前一分钟他们还在场,下一分钟 Django 需要一副新的眼镜处方,因为它突然决定看不到我设置的目录中公然存在的图像。

这是我完整的可复制示例,看看是否有人能弄清楚为什么 Django 决定不显示图像:

#models.py
from django.db import models
import uuid

# Create your models here.
    ....
    uuid                   =    models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    article_image          =    models.ImageField(upload_to='media/assets')
    ....

在我的

views.py
中,我有以下内容:

def details(request, uuid):
    articles  =  MediaModule.objects.all().values()
    article = get_object_or_404(MediaModule, uuid=uuid)
    title = article.article_headline 
    return render(request, 'media-article.html', {'article': article, 'title':title, 'articles':articles})

文件目录如下:

Root|
  |- media
    |- template
      | - media-article.html
    |- media
      | - assets
        | - image.jpg

#media-article.html

<img src="{{article.article_image}}" alt="{{article.article_image}}"/>

为什么 Django 会想“啊哈,图像在那里!”,然后说“实际上,我要故意假装图像不存在,因为我现在会很难了”

为什么要这么做? Django 决定不显示图像的可能原因是什么?

为什么?

只是为什么?

除此之外,为什么 Django 认为适合复制目录中的图像并向其附加大量随机字母和数字?

python django
1个回答
0
投票

你使用

.url
 [Django-doc] 来获取媒体 URL,你在这里得到的是 filename,但这并不是因为你有相对于媒体目录的文件名,所以网络服务器可以提供该文件:

<img src="{{ article.article_image.url }}" alt="{{ article.article_image }}"/>

在 Django 中,您可以在调试模式下提供媒体文件,方法是:

# root urls.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # …
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在生产中,您应该配置 Nginx、Apache 等 Web 服务器来提供媒体文件。

© www.soinside.com 2019 - 2024. All rights reserved.