首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django静态文件templatetags.static

Django静态文件templatetags.static
EN

Stack Overflow用户
提问于 2018-12-02 17:30:28
回答 2查看 159关注 0票数 0

我试图在python中打开一个json文件。它位于我的应用程序静态目录中的一个名为json的目录中。我按照给定的文档配置了静态文件。

但是我在使用open()函数打开python中的文件时出现了这个错误。

代码语言:javascript
运行
复制
def send(request):
  file = static('accounts/json/credentials.json')
  f = open(file, "r")
  return HttpResponse("click here <a href='" + file + "'> asd</a>")

上面的代码生成一个FileNotFoundError

No such file or directory: '/static/accounts/json/credentials.json'

我还使用了以下代码

代码语言:javascript
运行
复制
def send(request):
  file = static('accounts/json/credentials.json')
  return HttpResponse("click here <a href='" + file + "'> asd</a>")

上面的代码成功地给了我响应。在单击asd链接时,它正常工作,并打开JSON文件。

我已经谷歌了一点,也经历了一些堆叠溢出问题,但不确定实际的错误是什么,谁能帮我找出。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-02 18:15:12

假定static是来自静态模板的辅助函数,它将为您提供STATIC_URL的URL路径。它不会给你文件路径。这是在STATIC_ROOT中设置的,您需要自己加入它:

代码语言:javascript
运行
复制
path = os.path.join(settings.STATIC_ROOT, 'accounts/json/credentials.json')
f = open(path, r)

注意,尝试将这个文件放入链接的文本中是没有意义的;如果您想要这样做,那么第二个片段是正确的。

票数 0
EN

Stack Overflow用户

发布于 2018-12-02 17:41:48

在您的settings.py文件中,应该有一个名为BASE_DIR定义的变量。你需要在你的文件名上加上这个。类似于:

代码语言:javascript
运行
复制
  file = static(settings.BASE_DIR + '/accounts/json/credentials.json')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53582819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档