使用Heroku为静态文件配置Django设置

ecbunoof  于 2023-03-23  发布在  Go
关注(0)|答案(1)|浏览(131)

我正在尝试使用Heroku部署我的Django网站。到目前为止,网站已经部署成功,但唯一的问题是收集静态文件。我被如何配置我的settings.py文件卡住了,这样网站就知道在哪里可以找到这些静态文件。

  • 文件夹结构 *
-website    
---App  
------Static
---------App  
---Website    
---staticfiles    
---manage.py
---Procfile    
---requirements.txt
---runtime.txt
  • 设置.py*
DEBUG = False

BASE_DIR = Path(__file__).resolve().parent.parent

MIDDLEWARE = [
   ...
   "whitenoise.middleware.WhiteNoiseMiddleware", 
   ...
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"), 
    os.path.join(BASE_DIR, "App/static")
] 
django_heroku.settings(locals())

STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
  • 错误消息 *

whitenoise.storage.MissingFileError:The file 'App/static/app/styling-images/search_button.png' cannot be found with〈whitenoise.storage.CompressedManifestStaticFilesStorage object at 0x0000016932C5D190〉.
CSS文件“App\styles.css”引用了一个找不到的文件:App/static/app/styling-images/search_button.png
请检查此CSS文件中的URL引用,特别是可能指向错误位置的任何相对路径。

aij0ehis

aij0ehis1#

我怀疑静态文件实际上被发现了,这里的问题是其中一个文件,一个CSS文件,使用了一个硬编码的URL,如:

.search-button {
    background-image: url('App/static/app/styling-images/search_button.png');
    ....
}

如果DEBUG=True,这可能会正常工作,但在生产环境中则不行。您应该能够更改CSS url()以使用您的STATIC_URL设置作为其顶级,例如,

.search-button {
    background-image: url('/static/app/styling-images/search_button.png');
    ....
}

(You我可以告诉你,如果你已经得到了正确的网址输入到您的浏览器后,您的域名,看看它是否返回的图像。使用静态_URL的顶级也应该在您的开发环境)

相关问题