Django在view中将数据库查询数据以JSON格式数据返回

目录

1.返回多条查询数据

2.返回单个对象

1.返回多条查询数据

import json
from django.http import HttpResponse
from django.core import serializers
def db_to_json(request):
    scripts = Scripts.objects.all()[0:1]
    json_data = serializers.serialize('json', scripts)
    return HttpResponse(json_data, content_type="application/json")
 

返回结果

[{
    "fields": {
        "script_content": "abc",
        "script_type": "1"
    },
    "model": "home_application.scripts",
    "pk": "03a0a7cf-567a-11e9-8566-9828a60543bb"
}]

功能实现了,但是如果返回一个约定好的JSON格式,查询结果放在 data 中

比如: {"message": 'success', "code": '0', "data": []}


代码如下:

import json
from django.http import HttpResponse
from django.core import serializers
def db_to_json2(request):
    # 和前端约定的返回格式
    result = {"message": 'success', "code": '0', "data": []}
    scripts = Scripts.objects.all()[0:1]
    # 序列化为 Python 对象
    result["data"] = serializers.serialize('python', scripts)
    # 转换为 JSON 字符串并返回
    return HttpResponse(json.dumps(result), content_type="application/json")


调用结果

{
    "message": "success",
    "code": "0",
    "data": [{
        "fields": {
            "script_content": "abc",
            "script_type": "1"
        },
        "model": "home_application.scripts",
        "pk": "03a0a7cf-567a-11e9-8566-9828a60543bb"
    }]
}


有点难受的是,每条数据对象包含 fields,model,pk三个对象,分别代表字段、模型、主键,我更想要一个只包含所有字段的字典对象。虽然也可以处理,但还是省点性能,交给前端解析吧。

2.返回单个对象

代码:

from django.forms.models import model_to_dict
from django.http import HttpResponse
import json
def obj_json(request):
    pk = request.GET.get('script_id')
 
    script = Scripts.objects.get(pk=pk)
    # 转为字典类型
    script = model_to_dict(script)
 
    return HttpResponse(json.dumps(script), content_type="application/json")
返回JSON:

{
    "script_id": "1534d8f0-59ad-11e9-a310-9828a60543bb",
    "script_content": "3",
    "script_name": "3",
    "script_type": "1"
}


————————————————

原文链接:https://blog.csdn.net/qq_21137441/article/details/113133113

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 创建一个Django项目和应用程序 首先,我们需要创建一个Django项目和应用程序。在终端中输入以下命令: ``` django-admin startproject myproject cd myproject python manage.py startapp myapp ``` 2. 安装必要的库 我们需要安装 psycopg2 和 django-jsonfield 库。在终端中输入以下命令: ``` pip install psycopg2 django-jsonfield ``` 3. 配置数据库 在 settings.py 文件中,我们需要配置数据库连接。在 DATABASES 字典中添加以下内容: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '5432', } } ``` 4. 创建模型 在 models.py 文件中,我们需要创建一个模型来存储 JSON 数据。以下是一个示例模型: ``` from django.db import models from jsonfield import JSONField class MyModel(models.Model): data = JSONField() ``` 5. 迁移数据库 在终端中输入以下命令,创建数据库表: ``` python manage.py makemigrations python manage.py migrate ``` 6. 存储 JSON 数据 在视图函数中,我们可以使用以下代码将 JSON 数据存储到数据库中: ``` from myapp.models import MyModel import json def my_view(request): data = {'name': 'John', 'age': 30} json_data = json.dumps(data) my_model = MyModel(data=json_data) my_model.save() ``` 7. 读取 JSON 数据 在视图函数中,我们可以使用以下代码从数据库中读取 JSON 数据: ``` from myapp.models import MyModel import json def my_view(request): my_model = MyModel.objects.first() json_data = my_model.data data = json.loads(json_data) print(data['name']) # 输出 John ``` 这就是将 JSON 数据存储到 PostgreSQL 数据库中的完整过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值