【问题标题】:Django: STATIC_ROOT STATIC_ROOT can't join with BASE_DIR pathDjango:STATIC_ROOT STATIC_ROOT 无法加入 BASE_DIR 路径
【发布时间】:2021-11-26 12:08:43
【问题描述】:

我希望我的 STATIC_ROOT 路径位于 F:/7.Django/BLOG_PROJECT/src_blog/' + '/vol/web/staticfiles 但 django 将其设置为 F:/vol/web/staticfiles

我这样设置我的 STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR,'/vol/web/staticfiles')

print('this is base_dir')
print(BASE_DIR)
print("this is static_root")
print(STATIC_ROOT) 

当我运行 python manage.py runserver 时,它会打印出来:

this is base_dir
F:\7.Django\BLOG_PROJECT\src_blog
this is static_root
F:/vol/web/staticfiles
this is base_dir
F:\7.Django\BLOG_PROJECT\src_blog
this is static_root
F:/vol/web/staticfiles

当我运行python manage.py collectstatic。当然!它将我的 STATIC_ROOT 设置为F:/vol/web/staticfiles。我注意到它打印出单独的文件夹符号不同的'/'和#backslashsymbol。顺便说一句,我使用 Windows 操作系统。

【问题讨论】:

  • 您遇到的具体错误是什么?
  • 没有任何错误。它只是将 Static_root 路径设置在我想要的位置
  • 那么与当前输出相比,期望的结果是什么?
  • 我想要的文件路径F:/7.Django/BLOG_PROJECT/src_blog/vol/web/staticfiles
    以及我当前的Static_root路径F:/vol/web/staticfiles
  • 您可以尝试先将两个路径作为字符串连接,然后再将其转换回路径对象。您可能应该将 / 更改为 \\ 以保持一致

标签: python django static django-staticfiles django-3.2


【解决方案1】:

解决了!只需将其更改为反冲符号而不是“/”。
看起来只是一个窗口 vs linux 讨厌的东西。

STATIC_ROOT = os.path.join(BASE_DIR,'vol\web\staticfiles')

编辑:当您在 Linux 基础容器中使用代码时,您知道我上面的回答会产生问题 @AbdulAzizBarkat 给我一个更好的解决方案:
如果您希望 os.path.join 正确处理它们,则不应在路径中提供任何斜杠,因此您应该编写

os.path.join(BASE_DIR, 'vol', 'web', 'staticfiles')

【讨论】:

  • 您忘记了最初您的路径中有一个前导斜杠,如果您正确使用该功能,反斜杠和斜杠并不重要。
  • STATIC_ROOT = os.path.join(BASE_DIR,'\vol\web\staticfiles') 给出这个输出:F:\7.Django\BLOG_PROJECT\src_blog\

    ol\web\staticfiles 我在上面编辑我的答案的任何方式:ol\web\静态文件
【解决方案2】:

它可能会解决你的问题。

STATIC_ROOT = BASE_DIR / 'path'

【讨论】:

    猜你喜欢
    • 2019-12-29
    • 2017-02-28
    • 2021-02-24
    • 1970-01-01
    • 2015-04-10
    • 2018-05-13
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    相关资源
    最近更新 更多