我想制作一个应用程序,其中管理员在管理面板上上传图像,并在模板上显示。我知道有与此相关的一些问题,但我尝试了所有问题,但仍无法显示图像。 Django版本:2.1.4 python版本:3.6.7
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'image')
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
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})
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)
<img src="{{ ImageModel.image.url }}" alt="image" />
这样做会给我显示损坏的图像,有时会显示图像的完整url(图像保存在哪里)我在做错什么。我尝试在views.py中打印可变图像,它会打印我的caption(“ image”),这意味着它在img标签中发送字幕,而不是图像本身?我应该制作一类新的ImageUpload吗? 预先感谢
答案 0 :(得分:2)
您需要遍历ImageModel
queryset(通过变量image
作为上下文发送),并在模板中显示图像,如下所示:
{% for im in image %}
<img src="{{ im.image.url }}" alt="image" />
{% endfor %}