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

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

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

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

我不明白为什么它说“没有这样的文件或目录”,如果文件确实存在以及如何解决它。

最佳答案

当您在 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' )

关于python - 无法在 Django 1.8 中解析静态 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47956327/

相关文章:

python - Pandas +xlsx : format cells based on another dataframe

python - Parseval 定理不适用于 ifft

python - 这不是一个元组吗?

python - 零和游戏16位版

python - 在 Python 中使用 Postgres 的 COPY FROM 文件查询而不写入临时文件

python - 如何路由到特定的 View 集方法 Django

django - 确定 django 中 session 的年龄

java - 从 Java 运行 Python 脚本

python - 如何使用/安装 gps python 库

python - 绘制多个信号的最pythonic方式