JSON数据转换为django模型

Posted

技术标签:

【中文标题】JSON数据转换为django模型【英文标题】:JSON data convert to the django model 【发布时间】:2016-04-21 22:06:10 【问题描述】:

我需要将 JSON 数据转换为 django 模型。

这是我的 JSON 数据


  "data": [
    
      "id": "20ad5d9c-b32e-4599-8866-a3aaa5ac77de",
      "name": "name_1"
    ,
    
      "id": "7b6d76cc-86cd-40f8-be90-af6ced7fec44",
      "name": "name_2"
    ,
    
      "id": "b8843b1a-9eb0-499f-ba64-25e436f04c4b",
      "name": "name_3"
    
  ]

这是我的 django 方法

def get_titles():
    url = 'http://localhost:8080/titles/' 
    r = requests.get(url)
    titles = r.json()
    print(titles['data'])

我需要的是转换为模型并传递给模板。请告诉我如何将 JSON 转换为模型。

【问题讨论】:

【参考方案1】:

在 Django 模板中使用 JSON

您没有将 JSON 结构转换为 Django 模型只是为了在 Django 模板中使用它:JSON 结构(Python 字典)在 Django 模板中工作得很好

例如如果您将'titles': titles['data'] 作为模板的上下文传递,您可以将其用作:

% for title in titles %
    ID is title.id, and name is title.name
% endfor %

只要您不需要使用 Django 存储数据,上述解决方案就可以正常工作。如果您想存储,请阅读下文。

制作模型

您可以创建一个模型来存储该 JSON 数据。存储后,您可以将查询集传递给您的模板

class Title(models.Model)
    id = models.CharField(max_length=36)
    name = models.CharField(max_length=255)

或使用UUIDField

class Title(models.Model)
    id = models.UUIDField(primary_key=True)
    name = models.CharField(max_length=255)

将数据存储在 Django 模型中

# Read the JSON
titles = r.json()
# Create a Django model object for each object in the JSON 
for title in titles['data']:
    Title.objects.create(id=title['id'], name=title['name'])

使用存储的数据作为模板上下文传递

# Then pass this dict below as the template context
context = 'titles': Title.objects.all()

【讨论】:

感谢您的评论。我有个问题。我没有配置数据库。它只是消耗 REST 服务。如何创建对象并获取上下文中的所有对象? 将我在答案中描述的Title 模型放入您的Django 应用程序中名为models.py 的文件中,将您的应用程序添加到INSTALLED_APPS 中的settings.py,运行数据库迁移以创建SQL 表等,更多内容在这里:docs.djangoproject.com/en/1.9/topics/db/models 谢谢,恐怕我不会为我的应用程序创建任何数据库。它使用 REST API 并将 json 转换为模型(或对象)并发送到视图模板。如何在没有 db 表的情况下创建模型(或对象)? 如果想要一个没有 DB 表的模型,那么在 Django 的意义上,你真的不需要一个模型 :) 你对答案第一段中的 JSON/Python 字典没问题。尝试创建一个视图和一个模板,例如title.html 并传入你拥有的 JSON 数据。如果您遇到困难,请发布另一个问题,如果我看到它会提供帮助! 如果您正在考虑 MVC 模式中的“模型”,在 Django 中它不需要是 Django ORM 模型,它可以是 Python 对象、Python dict(例如 JSON)。您不需要 Django 模型将数据传递给模板。

以上是关于JSON数据转换为django模型的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将 Django 模型查询集转换为模板中的 json 或 json 字符串?

DJANGO - 将 POST 数据转换为 JSON 并部分呈现 HTML

如何将 pandas 数据框转换为 json 以在 django 模板中使用

在 Django Rest Framework 中将整数的 JSON 列表转换为字符串

django-rest-framework-从零开始-2-序列化类serializers.Serializer的使用

Django:将带有相关对象的 QuerySet 转换为 JSON