Django 检索静态文件的 static() 函数没有给出这样的文件 -error
Posted
技术标签:
【中文标题】Django 检索静态文件的 static() 函数没有给出这样的文件 -error【英文标题】:Django's static() function to retrieve static file gives no such file -error 【发布时间】:2022-01-23 03:06:44 【问题描述】:我正在用 Django 做一个项目,结构如下:
/project
/cv
/static
/configuration
configuration.json
所以一个项目中包含一个应用程序和一个静态文件夹中的 config.json 文件。
我的 settings.py(最重要的设置):
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"cv",
]
STATIC_URL = "/static/"
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(BASE_DIR, "cv/static")
在我看来,我使用 static() 函数来检索静态文件
def index(request):
file_path = static("configuration/configuration.json")
with open(file_path) as f:
configuration = json.loads(f.read())
return render(request, "index.html", configuration)
但它一直给我错误:
没有这样的文件或目录:'/static/configuration/configuration.json'
我可以通过将路径字符串显式解析为索引函数来修复它:
def index(request):
file_path = "./cv/static/configuration/configuration.json"
with open(file_path) as f:
configuration = json.loads(f.read())
return render(request, "index.html", configuration)
但是我该如何使用 static() 函数呢? static() 函数使用了 static_url 变量,但无论我如何调整它,它总是给我类似的错误。
有人知道我在这里做错了什么吗?
【问题讨论】:
【参考方案1】:static()
函数将返回可以访问文件的 URL,你不需要那个,你需要在文件系统上获取文件的路径。
加入settings.STATIC_ROOT
和文件以获取文件系统上文件的路径
def index(request):
file_path = os.path.join(settings.STATIC_ROOT, "configuration/configuration.json")
with open(file_path) as f:
configuration = json.loads(f.read())
return render(request, "index.html", configuration)
【讨论】:
以上是关于Django 检索静态文件的 static() 函数没有给出这样的文件 -error的主要内容,如果未能解决你的问题,请参考以下文章