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 列表转换为字符串