我刚接触Django,在开发环境中遇到ImageField字段类型的问题。我可以通过管理面板上传图片,并且可以将它们转到本地的媒体文件夹位置。但是它们不会在Django中的DOM中呈现。
我正在运行Django 2.1.7,并已安装Pillow 5.4.1
我的媒体文件夹位于我的基本目录(与manage.py文件相同的级别)中,并且具有系列的子目录(由我的模型创建),其中包含我通过管理员上传的所有正确图像面板。
在我的模板.html文件中,我尝试使用以下方式加载图像:
{% load static %}
<img src="{{ s.cardImage.url }}">
并且我在终端中收到200状态响应,但是该图像未渲染,并且当我检查该图像时,它显示“无法加载图像”。如果仅在模板中输出{{s.cardImage.url}},则会得到以下路径:/media/series/IMG_5776.PNG。 因此,我倾向于认为自己的观点是正确的,并且正在从数据库中查询正确的对象。
当我在“管理”面板中上传图片时,外观如下:Admin Panel
如果我点击管理面板系列中的链接(上图)/IMG_5776.PNG,它将带我到以下网址:http://127.0.0.1:8000/media/series/IMG_5776.PNG,并且DOM为空白(从我返回的状态码为200开发服务器)。
这是我感到难过的地方。我做了很多研究,我觉得我已经正确设置了所有东西。有谁知道可能出什么问题了?非常感谢您的帮助。
相关设置:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
型号:
class Series(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=50)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
cardImage = models.ImageField(upload_to='series', default='default.jpg')
终端日志:
"GET /media/series/IMG_5776.PNG HTTP/1.1" 200 0
基本urls.py:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)