我无法在Django中从json文件创建json对象。这是代码。 我有一个名为out.json的文件,里面有json对象。我想发送这些对象作为响应。我收到错误说
/ projectboard / random中的FileNotFoundError [Errno 2]没有这样的文件或目录:' out.json'
views.py
from django.shortcuts import render, HttpResponseRedirect
import sys, os
import json
from django.http import JsonResponse
from tempfile import *
import subprocess
# Create your views here.
from django.http import HttpResponse
def random(request):
os.system('python pypy.py')
with open('out.json') as json_data:
data = json.load(json_data)
print(data)
return JsonResponse(data)
urls.py
from rest_framework.routers import DefaultRouter
from django.views.generic import TemplateView
from django.conf.urls import url, include
from . import views
urlpatterns = [
url(r'^random$', views.random, name='random'),
url(r'^view/(?P<id_remedio>\w+)/$', views.view, name='view'),
url(r'^view/$', views.view, name='view')
]
答案 0 :(得分:1)
out.json文件应与manage.py文件位于同一目录
foo/
manage.py
foo/
__init__.py
settings.py
urls.py
wsgi.py
out.json
答案 1 :(得分:1)
将out.json移动到目录
/projectboard/out.json
out.json
必须与views.py
位于同一目录中,或者与调用open(file)
的py文件位于同一目录中。如果您正在使用Linux或OS X,请导航至/projectboard
文件夹并键入ls
以列出要仔细检查的文件out.json
位于正确的路径中。否则在Windows计算机上使用dir
。
答案 2 :(得分:0)
我会确保包含该文件的完整路径。除非您的out.json
与相同的文件夹与尝试打开它的文件相同,否则您将收到该错误。
更好的是,如果你的几个应用程序中有如上文件中的对象,或者只是为了清理你的项目,我会在你的应用程序中包含一个/ fixtures /文件夹,并删除所有.json文件。然后,您可以轻松地检索这些文件的根目录(可以将其包含在settings.py
文件中) - 类似于:
FIXTURES_ROOT = os.path.abspath(os.path.dirname(__file__)) + '/fixtures/'
然后您可以使用
from django.conf import settings
...
json_path = settings.FIXTURES_ROOT + <YOUR_JSON_FILENAME>
整个项目