Django2.1.7 查询数据返回json格式的实现

  • Post category:Python

使用Django进行数据库操作时,我们经常需要把查询到的数据返回给前端,其中JSON格式是最常用的一种。下面是实现Django2.1.7查询数据返回JSON格式的完整攻略:

1. 确认models.py中已经定义好模型类

假设我们有一个Product模型类,包含id、name和price三个属性,那么我们需要在models.py中定义如下:

from django.db import models

class Product(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=256)
    price = models.DecimalField(max_digits=8, decimal_places=2)

2. 在views.py中编写数据查询逻辑

在views.py文件中,我们可以编写一个函数,来完成数据的查询逻辑。下面是一个简单的示例:

from django.http import JsonResponse
from myapp.models import Product

def get_product(request, product_id):
    try:
        product = Product.objects.get(id=product_id)
    except Product.DoesNotExist:
        return JsonResponse({'error': 'Product does not exist'})

    product_dict = {
        'id': product.id,
        'name': product.name,
        'price': float(product.price),
    }

    return JsonResponse(product_dict)

这里我们定义了一个用于获取指定商品信息的视图函数,输入参数为商品ID。如果商品不存在,则返回错误信息。如果商品存在,则将相应的属性构建为一个字典,然后通过JsonResponse将其以JSON格式返回给前端。

3. 设置路由规则

最后我们需要将之前编写的视图函数与一个URL地址绑定,并设置对应的路由规则。下面是一个简单示例:

from django.urls import path
from myapp.views import get_product

urlpatterns = [
    path('product/<int:product_id>', get_product, name='get_product'),
]

这里我们设置了一个URL路径/product/,并将它与get_product视图函数绑定。

示例

假设我们使用的是SQLite数据库,并且已经存在一条ID为1、名称为“Apple”,价格为5元的记录,则访问http://localhost:8000/product/1 将返回如下JSON格式数据:

{
    "id": 1,
    "name": "Apple",
    "price": 5.0
}

另外,如果我们访问一个不存在的记录,如http://localhost:8000/product/100,则会返回如下JSON格式数据:

{
    "error": "Product does not exist"
}

以上就是Django2.1.7查询数据返回JSON格式的完整攻略。