无法在 Django 1.8 中解析静态 JSON 文件
Can't parse a static JSON file in Django 1.8
我有以下树:
myDjangoSite/
...
myApp/
...
static/
...
myApp/
myData.json
我有这个 view.py 文件:
import json
from django.shortcuts import render
from django.contrib.staticfiles.templatetags.staticfiles import static
url = static('myApp/myData.json')
json_data = open(url)
def helloWorld(request):
return render(request, 'myApp/index.html')
...当我访问该网页时,浏览器显示此消息:
IOError 在 /
[Errno 2] 没有这样的文件或目录:'/static/myApp/myData.json'
我不明白为什么它说 "no such file or directory",文件是否存在以及如何解决它。
当您在 1.8 设置上创建新项目时 BASE_DIR
var 被创建:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
使用此变量作为文件路径的基础:
>>> from django.conf import settings
>>> import os
>>> f=os.path.join( settings.BASE_DIR, 'myApp/static/myApp/myData.json' )
>>> f
'/home/dani/tmp/ppdpd/p/myApp/myData.json'
>>> json_data = open(f)
注意 而不是 static
旨在从导航器端、远程、从 Internet 获取开箱即用客户端的路径。而不是来自您的服务器端 Django 应用程序。
注意 可能是您在部署应用程序时调用 collectstatic
,那么正确的路径将是 settings.STATIC_ROOT
类似于:
>>> f=os.path.join( settings.STATIC_ROOT, 'myApp/myData.json' )
我有以下树:
myDjangoSite/
...
myApp/
...
static/
...
myApp/
myData.json
我有这个 view.py 文件:
import json
from django.shortcuts import render
from django.contrib.staticfiles.templatetags.staticfiles import static
url = static('myApp/myData.json')
json_data = open(url)
def helloWorld(request):
return render(request, 'myApp/index.html')
...当我访问该网页时,浏览器显示此消息:
IOError 在 / [Errno 2] 没有这样的文件或目录:'/static/myApp/myData.json'
我不明白为什么它说 "no such file or directory",文件是否存在以及如何解决它。
当您在 1.8 设置上创建新项目时 BASE_DIR
var 被创建:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
使用此变量作为文件路径的基础:
>>> from django.conf import settings
>>> import os
>>> f=os.path.join( settings.BASE_DIR, 'myApp/static/myApp/myData.json' )
>>> f
'/home/dani/tmp/ppdpd/p/myApp/myData.json'
>>> json_data = open(f)
注意 而不是 static
旨在从导航器端、远程、从 Internet 获取开箱即用客户端的路径。而不是来自您的服务器端 Django 应用程序。
注意 可能是您在部署应用程序时调用 collectstatic
,那么正确的路径将是 settings.STATIC_ROOT
类似于:
>>> f=os.path.join( settings.STATIC_ROOT, 'myApp/myData.json' )