Django:如何在模板中显示数据库中的图像?

Posted

技术标签:

【中文标题】Django:如何在模板中显示数据库中的图像?【英文标题】:Django : how to display images from database in template? 【发布时间】:2020-07-10 14:08:03 【问题描述】:

您好,我不知道为什么,但我无法显示数据库中的图像。我认为这是因为我在模板中的路径。

我的模特:

class Article(models.Model):
    titre = models.CharField(max_length=200)
    auteur = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date de publication')
    numero = models.CharField(max_length=200)
    categorie = models.CharField(max_length=200, default="culture")
    contenu = models.CharField(max_length=200000)
    image = models.ImageField(upload_to='image_publie', blank=True, null=True)

    def __str__(self):
        return self.titre

    def was_published_recently(self):
        return self.pub_date >= timezone.now() -datetime.timedelta(days=7)

我的看法:

def detail(request, article_id):
    article = get_object_or_404(Article, pk=article_id)
    return render(request, 'gazette/detail.html', 'article':article)

我的网址:

path('<int:article_id>/', views.detail, name='detail'),

设置:

STATIC_URL = '/static/'
MEDIA_URL = '/images/'
MEDIA_ROOT = os_path.join(BASE_DIR, 'images/')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

我的模板:

% extends "base.html" %
% load static %

% block content %
<h1> article.contenu </h1>
<ul>
 % if article.image %

    <img src="article.image.url"  style="width: 200px; height: 200px;">

 % endif %
</ul>
% endblock %

并且:

以及我在模板上看到的内容

【问题讨论】:

您能详细说明“无法加载”是什么意思吗?另外,向我们展示加载后生成的 HTML 【参考方案1】:

urlpatterns 之后将此添加到您的urls.py

from django.conf import settings

if settings.DEBUG:
    from django.conf.urls.static import static
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

【讨论】:

像这样:from django.urls import path, include from . import views from django.conf import settings from django.conf.urls.static import static from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns = [ path('&lt;int:article_id&gt;/', views.detail, name='detail'), ] urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) if settings.DEBUG: from django.conf.urls.static import static urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

以上是关于Django:如何在模板中显示数据库中的图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 模板中显示保存的、动态创建的图像?

如何在 django 中为模板应用背景图像

如何在从管理面板 Django 1.3 上传的模板中显示图像

如何在 django 模板的 for 循环中加载图像?

如何在 django 模板中的一行中显示来自 db 的输出文本

为啥 Django 不在我的模板上显示我的动态背景图像