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

0 投票
1 回答
732 浏览
提问于 2025-05-01 01:13

下面是我的 view.py 文件(目前还不太好用)。我想把 d.json 存储在 statics 文件夹下的 data 子文件夹里,使用下面的代码。请问怎么才能让 Djson 把这个 d.json 存起来呢?

Myapp>statics>data>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 个回答

1

view 其实就是一个 Python 函数,它的第一个参数是 HttpRequest,然后返回一个 HttpResponse 的实例。

所以 def getjson(request): 只是一个 函数,而不是 view,因为它没有返回 HttpResponse 的实例。不过你可以从其他函数或者视图中调用这个函数。

你可以把数据存到指定的位置,使用类似下面的方式:

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)

撰写回答