从管理面板显示图像

时间:2019-01-09 08:32:45

标签: python django

我想制作一个应用程序,其中管理员在管理面板上上传图像,并在模板上显示。我知道有与此相关的一些问题,但我尝试了所有问题,但仍无法显示图像。 Django版本:2.1.4 python版本:3.6.7

在setting.py

STATIC_URL = '/static/'

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'image')

在model.py

from django.db import models

class ImageModel(models.Model):
    caption = models.CharField(max_length=40)
    image = models.ImageField(upload_to='uploadImage', blank=True)

    def __str__(self):
        return self.caption 

在view.py

from django.shortcuts import render
from .models import ImageModel

def image_page(request):
    images = ImageModel.objects.all()
    return render(request, 'input/hello.html', {'image':images})

在urls.py

from django.contrib import admin
from django.urls import path, include
from image import views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.image_page),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在imageShow.html

<img src="{{ ImageModel.image.url }}" alt="image" /> 

这样做会给我显示损坏的图像,有时会显示图像的完整url(图像保存在哪里)我在做错什么。我尝试在views.py中打印可变图像,它会打印我的caption(“ image”),这意味着它在img标签中发送字幕,而不是图像本身?我应该制作一类新的ImageUpload吗? 预先感谢

1 个答案:

答案 0 :(得分:2)

您需要遍历ImageModel queryset(通过变量image作为上下文发送),并在模板中显示图像,如下所示:

{% for im in image %}
    <img src="{{ im.image.url }}" alt="image" />
{% endfor %}
相关问题