在正式开始 Django REST Framework 学习之前,先用 django.core.serializers 和原生的 Django View 类来实现一次数据的序列化数据。
下面的例子展示了,是如何解决序列化 JSON 数据的,前提:给Products的Model已经创建完
创建 Django 项目,并修改 urls.py 文件:
1 from django.views.generic import TemplateView 2 from product.views import ProductsListView 3 4 5 urlpatterns = [ 6 url(r'^admin/', admin.site.urls), 7 url(r'^products/', ProductsListView.as_view(), name="product-list"), 8 ]
创建 view.py 文件并写入如下内容:
1 import json 2 3 from django.http import JsonResponse 4 from django.core import serializers 5 from django.views.generic.base import View 6 7 from products.models import Product 8 9 10 class ProductListView(View): 11 def get(self, request): 12 products = Product.objects.all() 13 json_data = serializers.serialize('json', products) # 将django model 得到的对象序列化成 json 类型 14 json_data = json.loads(json_data) 15 16 return JsonResponse(json_data, safe=False) # safe = False 因为json_data是 non-dict 类型,不然会报错
注:在打开网页显示数据时需下载chrome jsonview插件
这样一个基本的django 使用json数据类型调取数据的过程就完成了,但是会有以下问题:
- 图片,日期格式支持不够(仅会显示图片相对路径)
- 主键JSON字段之外,使得调用起来会不方便
- 文档需要手动写,缺乏规范性且效率低下
- 输入验证缺失 (类似于表单的认证)
- 等等