如何在Django中查看JSON文件

时间:2017-04-18 18:52:05

标签: json django sqlite

所以我有一个JSON文件,我想迭代它并使用Django显示信息。我该怎么做,是否需要像正常一样设置模型?如何使用SQLite将此数据传输到数据库模型?

我在类似的stackoverflow问题上发现了这个代码,但我不知道如何通过HTTPResponse显示数据,以便用户可以查看数据:

import json

json_data = open('/static/prices.json')   
data1 = json.load(json_data) // deserialises it
data2 = json.dumps(json_data) // json formatted string

json_data.close()

1 个答案:

答案 0 :(得分:1)

选项1:使用loaddata

Django提供了loaddata命令来转移'从json | xml | ..到Model的数据。 要使用loaddata,请将文件prices.json移至yourapp/fixtures并重新格式化:

[{
    "model": "yourapp.yourmodel",
    "pk": 1,
    "fields": {
        "name": "Item A",
        "price": 1
    }
}, {
    "model": "yourapp.yourmodel",
    "pk": 2,
    "fields": {
        "name": "Item B",
        "price": 2
    }
}]

然后运行命令python manage.py loaddata prices

选项2:使用迁移

如果您不想更改文件格式,请创建空迁移

python manage.py makemigrations yourapp --empty

在新的迁移文件中,添加insert_price,如下所示:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import json
from django.db import models, migrations
from yourapp.models import Model


def insert_price(apps, schema_editor):
    with open('/path/to/prices.json') as data_file:    
        data = json.load(data_file)

    for item in data:
        # Update, map field for item to make it match with Model
        # item['description'] = 'Just kidding'
        Model.objects.create(**item)

class Migration(migrations.Migration):

    dependencies = [
        ('yourapp', '000_previous_depends'),
    ]

    operations = [
        migrations.RunPython(insert_price),
    ]

最后,应用迁移python manage.py migrate