【问题标题】:Why can't Django detect a static file outside of my project folder in local?为什么 Django 在本地无法检测到我的项目文件夹之外的静态文件?
【发布时间】:2020-10-27 21:46:26
【问题描述】:

在 Django 模板标签中,我返回了一个位于我的项目文件夹之外的文件路径。我把它放在我的模板中。我的文件如下所示:

myproject (contains project, app, manage.py, etc)
myfolder
|
+----styles.css

在我的模板标签中,这是我要返回的:

from myproject.settings import BASE_DIR
from pathlib import Path

...

def get_outside_file():
    HOME_DIR = Path(BASE_DIR).parent
    return os.path.join(HOME_DIR, 'myfolder/styles.css')

不幸的是,在我的模板中,我收到了这个错误:

"GET /Users/myusername/myfolder/styles.css HTTP/1.1" 404

我显然在那个文件夹中有该文件,但 Django 似乎无法检测到它。我该如何解决这个问题?感谢您的帮助。

顺便说一句,我在 Mac OsX 上,如果有帮助的话。

【问题讨论】:

  • 您是否有理由使用这种方法而不是在 settings.py 中设置 STATIC_URLSTATIC_ROOT 值?
  • 是的,我知道这并不理想,但我无法更改该文件在本地的位置。

标签: python django django-templates django-staticfiles


【解决方案1】:

尝试将您的路径添加到 STATICFILES_DIRSin settings.py 之类的

HOME_DIR = Path(BASE_DIR).parent

STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
os.path.join(HOME_DIR, 'myfolder/styles.css')]

【讨论】:

  • 你能扩展一下吗?你将如何使用模板标签中的目录?
  • 在 Settings.py 中添加一个 STATIC_ROOT,例如 STATIC_ROOT = os.path.join(BASE_DIR, 'static') 然后执行 manage.py collectstatic 命令。您的所有静态文件现在都将存储在项目基础目录中名为 static 的文件夹中。从那里您可以像通常使用静态标签一样访问您的文件
猜你喜欢
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2018-12-12
  • 2021-09-30
相关资源
最近更新 更多