我正在尝试为管理员构建一个 CMS,他可以在其中更改图像。 但到目前为止还不起作用,我找不到错误。
这里是模型,没有default.png
models.py
class Media(models.Model):
image = models.ImageField(blank=True, null=True)
class Meta:
verbose_name_plural = "Photo"
def __str__(self):
return self.image.name
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'assets'),
)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
print(MEDIA_ROOT)
views.py
def gallery_view(request):
return render(request, 'web/gallery.html', context={"pic": Media.objects.first()})
这是我的ImageField
模板:
<img class="ui bordered image" src="{{ pic.image.url }}">
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('webpage/', include('webpage.urls')),
path('', include('web.urls')),
path(r'^', include('web.urls', namespace='web')),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
现在,当我print(MEDIA_ROOT)
时,我的终端显示:
'Not Found: /media/default.png'
"GET /media/default.png HTTP/1.1" 404 1808"
和
"POST /admin/web/media/add/ HTTP/1.1" 302 0"
"GET /admin/web/media/ HTTP/1.1" 200 1282"
有人可以给我建议一下错误在哪里吗? 提前致谢。
最佳答案
仔细检查您是否在 settings.py 中添加了静态 URL 和媒体 URL 的路径。 对于静态 URL:
STATIC_URL = '/static/'
STATIC_ROOT = 'staticfiles'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
对于媒体 URL:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
要访问显示您的图片:
<img class="border-radius-50 profile-img" src="{{ MEDIA_URL }}{{ pic.image.url }}" alt="...">
关于python - Django ImageField(图像不显示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238325/