首页 > 解决方案 > 在网站中显示上传的图片 - Django

问题描述

我一直在尝试在我的 html 页面中显示我的图像,我确实做到了,但它不起作用他们告诉我这样做,但它不起作用图像在我的 html 模板中不起作用

希望任何人都可以帮助我谢谢

管理员.py

from django.contrib import admin

# Register your models here.
from .models import *


admin.site.register(slideshowgo)

设置.py

STATIC_URL = '/static/'

MEDIA_URL = '/images/'

STATICFILES_DIRS = [
   BASE_DIR / 'static',
]

MEDIA_ROOT = BASE_DIR / 'static/images'

模型.py

from django.db import models


class slideshowgo(models.Model):
image_one = models.ImageField(null=True,blank=True)

幻灯片html

<div class="slide">
<img class="mySlides imgslide" src="{{slideshowgo.image_one.url}}">
</div>

网址.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('card_store.url')),
] 

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

标签: pythondjango

解决方案


在 settings.py 中放入以下配置

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

在您的主 urls.py 文件中(与 settings.py 位于同一应用程序中的文件)

添加这个

from django.conf.urls.static import static
from django.conf import settings

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这将适用于 DEBUG = True 对于 DEBUG = False 它不会因为 Django 不能自己服务器媒体文件,所以你需要设置 NGINX 或 APACHE。

一种解决方法是将以下 URL 放在您的主 urls.py 中(不推荐用于生产)

re_path(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
re_path(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),

推荐阅读