无法在Django 1.8中解析静态JSON文件

时间:2017-12-23 21:52:26

标签: python django python-2.7 django-views django-staticfiles

我有以下树:

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')

...当我访问该网页时,浏览器会显示以下消息:

/ [Errno 2]没有这样的文件或目录:' /static/myApp/myData.json'

我不明白为什么它说'#34;没有这样的文件或目录",如果文件存在以及如何解决它。

1 个答案:

答案 0 :(得分:4)

在1.8设置BASE_DIR创建新项目时,会创建var:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

将此var用作文件路径的基础:

>>> 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 app。

注意可能是您在部署应用时调用collectstatic,然后正确的路径将是settings.STATIC_ROOT类似:

>>> f=os.path.join( settings.STATIC_ROOT, 'myApp/myData.json' )