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

Posted

技术标签:

【中文标题】有没有办法将 Django 模型查询集转换为模板中的 json 或 json 字符串?【英文标题】:Is there any way convert Django model queryset to json or json string in template? 【发布时间】:2018-04-22 14:02:47 【问题描述】:

我想将 react(或 vue)与 django 模板结合起来,但我不想将后端更改为 restful api。所以我想知道有什么方法可以将Django模型查询集转换为模板中的json或json字符串,以便我可以从jsx或vue中使用的dom中获取数据。

【问题讨论】:

Output Django queryset as JSON的可能重复 【参考方案1】:

要序列化具有核心功能的Django 查询集,请查看here:

from django.core.serializers import serialize
from models import MyModel

serialize('json', MyModel.objects.all())

要访问模板中的JSON,而不使用REST API 资源或AJAX,请利用custom template tags/filters。

tags.py:

from django.template import Library

register = Library()

@register.filter
def json(queryset):
    return serialize('json', queryset)

html 模板:

% load tags %
% users|json %

【讨论】:

【参考方案2】:

您可以只使用Django Rest Framework 的serialization 组件。它提供了一个声明式序列化器,比 Django 中的更灵活。

一个额外的好处,如果/当你想提供一个完整的 RESTful API 时,你已经有大量的代码了。

【讨论】:

以上是关于有没有办法将 Django 模型查询集转换为模板中的 json 或 json 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Django 将带有外键的查询集转换为 JSON

Django模板:从模型查询集对象中提取字段

Django:从 Pandas 到 Django Rest 框架的模型查询集

Django:将整个模型对象集转换为单个字典

Django 在模板中使用两个不同的数据集填充表

Django-filter:按模型属性过滤