如何在Django视图中将json数据存储在静态文件中,并从另一个函数调用此函数?

时间:2014-11-01 18:45:07

标签: python json django

所以,在我的view.py下面(不太合适)我想使用下面的代码将d.json存储在statics subfloder下的数据文件夹中。如何告诉Djson转储这个d.json。

MYAPP>静力学>数据> d.json

def getjson(request)
    import ujson as json
    import pandas
    import numpy as np

    df = pandas.DataFrame({
        "time" : [1,2,3,4,5],
        "temp" : np.random.rand(5)
    })

    d = [
        dict([
            (colname, row[i])
            for i,colname in enumerate(df.columns)
        ])
        for row in df.values
    ]
    jdata = json.dumps(d)
    return jdata

我在这里失踪了什么?建议会很感激。

我的目标是最终在另一个函数中调用此函数来执行其他操作,我可以从视图中的其他函数调用此函数吗?

之类的东西
def anotherfunction(request):
  getjson()
  # do something else
  return

1 个答案:

答案 0 :(得分:1)

查看只是一个Python函数,它将 HttpRequest 作为其第一个参数,并返回 HttpResponse 的实例

所以def getjson(request):只是function不是 view,因为它不会返回 HttpResponse 的实例, 您可以从其他功能或视图中调用它(功能)

您可以使用这样的smth将数据转储到指定位置:

import json, os
from django.core.urlresolvers import resolve
from your_project_dir.settings import BASE_DIR

local_file_path = '{0}/{1}/{2}'.format(resolve(request.path).app_name, 'statics', 'd.json')
global_file_path = os.path.join(BASE_DIR, local_file_path)

with open(global_file_path, 'w') as outfile:
   json.dump(data, outfile)