[英]How can i serve static files in django?
我有一个文件夹static
:
static
-->css
----> main.css
-->images
----> image.png
Settings.py
:
STATICFILES_DIRS=[
os.path.join(BASE_DIR, "static"),
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static_cdn")
我跑了collectstatic
现在我在static_cdn
: images
, css
和admin
(以前从未见过最后一个)。
当我运行我的服务器时,它仍然不使用 static 文件。
如何在不使用 apache 或 nginx 或类似的东西的情况下将我的 static 文件提供给我的服务器?
Django 在生产中不提供 static 文件,但它保持与它们的链接。 当您的调试在生产中为假时,这是一个名为 whitenoise 的 django 应用程序来救援的地方。 在您的 django 应用程序上安装 whitenoise: pip install whitenoise
然后pip freeze > requirements.txt
在此之后将此中间件添加到您的 Z62AD1C2A46AFB89A36DACC 项目设置
MIDDLEWARE = [
# 'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# ...
]
然后添加这一行
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
然后将此代码推送到您的生产服务器并确保您运行collectstatic
命令,即python manage.py collectstatic
您的 static 文件现在应该可以工作了。
这是常见的 DigitalOcean 解决方案:
然后您可以访问文件存储,您基本上只是在 manage.py 目录中运行collectstatic
。
这是有关部署 Django 应用程序的官方 DigitalOcean 教程
使用 DigitalOcean 进行部署时,您将需要 nginx。
DigitalOcean 空间在幕后使用 Amazon S3 存储桶,因此您可以直接设置一个存储桶并使用它,但对我来说,go 的艰难方式没有任何好处。 只需使用 DigitalOcean Space
,因为它与您的droplet
完美链接。
要在生产环境中存储 static 文件,您将需要 S3 存储桶或其他类型的外部存储。 当我部署到 Heroku 时,我喜欢使用白噪声,因为它使用起来非常简单。 下面是一个配置示例:
MIDDLEWARE = [
# ...
'whitenoise.middleware.WhiteNoiseMiddleware',
]
# ...
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'build/static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.