Django 正确显示 ImageField 上传的图像



我正在使用Django构建自己的作品集,我刚刚有一个关于使用ImageField上传图像的问题。

我使用 ImageField 通过管理页面上传了一张图片,经过长时间的搜索,终于让我的页面成功显示图片。

urls.py

from django.contrib import admin
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('',include('pages.urls')), # main landing page
path('admin/', admin.site.urls), 
path('project/',include("projects.urls"))
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

projects.html

<img src="{{project.image.url}}">

然而,官方的 django 文档说这不是部署 django 站点的好方法。为什么会这样,显示图像的最佳/正确方法是什么?

原因也给出了documentation

这种方法效率极低,可能不安全,因此不适合生产。

在生产中部署媒体文件的正确方法是使用反向代理服务器(如 NGINX 或 Apache(,或者您也可以使用 S3 兼容存储(如 Amazon S3(来提供这些媒体文件。我可以给你一个NGINX中用于提供媒体文件的示例配置:

location /media {
alias /path/to/media/direcoty; # Change to your own media directory here.
access_log off;
}

最新更新