gpt4 book ai didi

python - 在 django 1.8 部署期间提供媒体文件

转载 作者:太空狗 更新时间:2023-10-29 16:58:00 27 4
gpt4 key购买 nike

我正在尝试在 heroku 上部署我的 django 应用程序。所有静态文件均由 whitenoise 提供服务并成功迁移。但是如何让使用 ImageField 上传的媒体文件在制作过程中显示。

我的settings.py

STATIC_URL = '/static/'
STATIC_ROOT = 'C:/Users/Sak/mpro/feat/static/'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mpro.settings")

application = get_wsgi_application()

try:
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
from dj_static import Cling
application = Cling(get_wsgi_application())
except:
pass

urls.py

urlpatterns = [
url(r'^', include('feat.urls', namespace="feat")),
url(r'^admin/', include(admin.site.urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我所有的媒体文件都上传到 base_dir/media/media 并且当 whitenoise 收集静态文件时它只收集位于 STATIC_ROOT 的文件,所以如何部署我的媒体文件。当我运行 heroku run ls 时,我可以看到文件夹媒体。

最佳答案

因此,首先重要的是要认识到,如果您有一堆文件是项目的一部分(包括图像等)并与项目一起部署,那么它们更有可能是静态文件而不是用 Django 的说法是媒体文件。

Django 中的媒体文件用于运行时上传的文件。它们通常会与相应的数据库条目一起存储,例如 models.ImageField(upload_to='/photos') 但不一定如此。

你的 Heroku 媒体设置是错误的,因为你无论如何都不应该写入服务器上的目录(这就是你告诉 Django 使用 MEDIA_ROOT = os.path.join(BASE_DIR, "媒体”)

最常见的情况是,您会改为使用 S3 存储桶存储 Heroku 上的媒体。 This是对此的相当全面的解释。您可能可以跳过有关 CORS 的部分,并在存储桶上获得开放权限(取决于您的用例)。重要的部分是:

# settings.py

# Tell django what URL to server your media from
MEDIA_URL = "https://%s/" % AWS_S3_CUSTOM_DOMAIN

# Tell Django to use the boto storage backend to save media files.
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

如果您想将 S3 用于静态和媒体存储,该链接也对此进行了说明。

您可能想看看 this repo非常全面地了解 AWS 设置及其作用,以及一个包装精美的包来为您完成其中的一些工作。

更一般地说,我发现 Django Herokuify对于 Heroku 上的所有样板文件都特别有用。

关于python - 在 django 1.8 部署期间提供媒体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31073322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com