1

我将一个 JSON 对象发布回服务器端并通过请求检索该信息。现在这是我的views.py代码

@csrf_exempt
def save(request):
    if request.method == 'POST':
        rawdata = request.body
        JSONData= json.dumps(rawdata)
    return HttpResponse(rawdata)

当我返回 rawdata 时,我的响应如下所示:

[{"time_elapsed":"0","volts":"239.3","amps":"19.3","kW":"4.618","kWh":"0","session":"1"},...]

当我返回 JSONdata 时,我的响应如下所示:

"[{\"time_elapsed\":\"0\",\"volts\":\"239.1\",\"amps\":\"20.8\",\"kW\":\"4.973\",\"kWh\":\"0\",\"session\":\"1\"},....]

尝试使用 Python/Django 将此数据插入 sqlite 数据库时,哪种响应更好?

另外,我将如何为此启动循环,我必须执行这种代码吗?

conn = sqlite3.connect('sqlite.db')
c = conn.cursor()
c.execute("INSERT STATEMENTS")

我假设我必须为该代码的 INSERT STATEMENTS 部分执行一个循环,但我没有任何密钥可以使用。在我的数据中,{} 之间的所有内容都是一行。每次看到 {...data...} 将其插入新行时,我如何遍历这个数组?

4

2 回答 2

1

这是我最终解决问题的方法。问题是弄清楚如何将 JSON 对象转换为 python 可以识别的东西,然后编写一个简单的循环来遍历所有生成的数据。

@csrf_exempt
def save(request):
    if request.method == 'POST':
        rawdata1 = request.body
        rawdata2 = json.loads(rawdata1)
        length = len(rawdata2)
        for i in range(0,length,1):
            x = meterdata(time_elapsed=rawdata2[i]['time_elapsed'], volts=rawdata2[i]['volts'], amps=rawdata2[i]['amps'], kW=rawdata2[i]['kW'], kWh=rawdata2[i]['kWh'], session=rawdata2[i]['session'])
            x.save()        
    return HttpResponse("Success!")

最大的区别是 json.loads 而不是转储,以及在 for 循环中如何访问新转换的数据。第一个括号指定要查找的行,第二个指定要查找的项目。我试图做数据 [0] [0] 的时间最长。愿这对将来发现此问题的任何人有所帮助。

于 2013-07-02T17:28:01.087 回答
0

可能如果您需要将该数据存储在数据库中,最好创建一个表示它的模型,然后您创建一个ModelForm与您的模型相关联的模型来处理您的 POST。

以这种方式将模型保存到数据库是微不足道的,并将其序列化为 json 响应类似于

data = serializers.serialize('json',
                             YourModel.objects.filter(id=id),
                             fields=('list','of','fields'))

return HttpResponse(data, mimetype='application/json')
于 2013-07-02T13:22:41.123 回答