使用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/
示例
假设我们使用的是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格式的完整攻略。