【问题标题】:Static Root Issue - Static files won't load deploying to pythonanywhere静态根问题 - 静态文件不会加载部署到 pythonanywhere
【发布时间】:2022-07-29 08:54:18
【问题描述】:

我目前正在尝试部署我的项目,但我似乎无法像使用 collectstatic 命令在我的本地环境中那样让我的静态文件正常工作。我正在部署的服务是 pythonanywhere——这就是我现在所处的位置。任何帮助将不胜感激!

settings.py

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

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    BASE_DIR / "static",
    BASE_DIR/"static"/"images",
    BASE_DIR/"static"/"css"
]

MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images')

MEDIA_URL = '/images/'

LOGIN_REDIRECT_URL = 'home'

LOGIN_URL = 'login'

我的文件结构

Pythonanywhere 路径

【问题讨论】:

    标签: python django path pythonanywhere django-staticfiles


    【解决方案1】:

    尝试在您的设置中提供一个 STATIC_ROOT 目录(这是 collectstatic 收集文件的位置,因此您可能已经有一个),例如,

    STATIC_ROOT = os.path.join(BASE_DIR, "static")
    

    接下来,确保在网页选项卡上您的目录值包含此文件夹的名称 - 在这种情况下,它可能是 home/HFShippingLLC/mysite/static。这应该与 static_root 的值基本相同。

    网络选项卡上的 URL 值未附加到目录值上,我认为您可能在目录值上遇到了问题。相反,它是一个别名 - 所以当浏览器请求 /static/ 时,它会在 home/HFShippingLLC/mysite/static 中查找

    这个问题中对各种 STATIC 设置有很好的解释:Differences between STATICFILES_DIR, STATIC_ROOT and MEDIA_ROOT

    注意:如果您想使用 STATIC_ROOT,您应该在 settings.py 中设置 DEBUG = False,并且在 pythonanywhere 中更改设置通常需要通过 web 选项卡重新加载站点。

    【讨论】:

    • 我让 collectstatic 运行并将所有文件复制到指定位置,将 settings.py 中的代码更改为: STATIC_ROOT = os.path.join(BASE_DIR, "static") STATIC_URL = ' /static/' STATICFILES_DIRS = [ BASE_DIR/"static"/"images", BASE_DIR/"static"/"css" ] 以及网站上指向此的路径:home/HFShippingLLC/mysite/static 但是,什么都不能仍然要从静态目录加载,有什么想法吗?
    • 您是否在网页标签上重新加载了网站?
    • 是的,当我运行 collectstatic 命令时目录不是空的 - 可以吗?
    • 是的 - 如果您之前运行过它或将其包含在上传中,就会发生这种情况。要检查的另一件事是您的设置文件中有 DEBUG = False 用于此环境。
    • 我已将其设置为 True,我应该将其更改为 False 吗?
    猜你喜欢
    • 2020-11-18
    • 2015-08-22
    • 2014-06-18
    • 1970-01-01
    • 2021-05-03
    • 2017-03-01
    • 2018-10-11
    • 1970-01-01
    • 2012-04-30
    相关资源
    最近更新 更多