【发布时间】:2019-06-03 23:32:53
【问题描述】:
我想制作一个应用程序,其中管理员在管理面板上上传图像并显示在模板上。我知道有一些与此相关的问题,但我尝试了所有这些但仍然无法显示图像。 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中打印可变图像并打印我的标题(“图像”),所以这意味着它在img标签中发送标题而不是图像本身?我应该创建一个新的 ImageUpload 类吗? 提前致谢
【问题讨论】:
-
你安装Pillow了吗?
-
是枕头==5.3.0
-
那么下面的答案应该可以纠正您的问题
-
不,答案是返回图像的路径 /media/uploadImage/back.jpg