django-rest-framework序列化的使用(一)
来源:互联网 发布:dot js 是什么 编辑:程序博客网 时间:2024/05/22 12:58
一、关于django-rest-framework
环境的配置
1、官网地址下查看支持的
django
版本及安装几个主要的包pip install coreapipip install Markdownpip install django-filterpip install django-crispy-formspip install django-guardian
2、利用
pycharm
创建一个django
项目3、
setting.py
的基本配置1、配置编码
#!/usr/bin/env python# encoding: utf-8
2、修改国内时间及支持中文
#设置时区 LANGUAGE_CODE = 'zh-hans' #中文支持,django1.8以后支持;1.8以前是zh-cnTIME_ZONE = 'Asia/Shanghai'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = False #默认是Ture,时间是utc时间,由于我们要用本地时间,所用手动修改为false
3、配置
mysql
数据库引擎# 配置数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'vueshop', 'USER': 'root', 'PASSWORD': "root", 'HOST': "127.0.0.1", 'OPTIONS': {'init_command': 'SET storage_engine=INNODB;'} # 数据库引擎 }}
4、把
rest_framework
加入到注册的app
中5、在
urls.py
中配置下from django.conf.urls import url, includefrom rest_framework.documentation import include_docs_urlsurlpatterns = [ .... url(r'^api-auth/', include('rest_framework.urls')), url(r'docs/', include_docs_urls(title='接口学习'))]
6、启动服务访问下
localhost:8000/docs
看看配置是否成功
二、使用APIView
创建返回第一个接口
1、关于
serializers
的认识在传统的使用模板开发中我相信我们一个
app
里面都会创建一个forms.py
的文件,来校验客户端传递过来的数据,serializers
则是django-rest-framework
封装了一层类似forms.py
的功能,只是对json
的校验2、书写一个
serializers
(字段要和models.py
中保持一致,一个app
下一个serializers.py
文件)from rest_framework import serializersclass GoodsSerializer(serializers.Serializer): name = serializers.CharField(required=True, max_length=100) click_num = serializers.IntegerField(default=0)
3、定义
view
继承APIView
from .serializers import GoodsSerializerfrom rest_framework.views import APIViewfrom rest_framework.response import Responsefrom .models import Goodsclass GoodsListView(APIView): def get(self, request, format=None): goods = Goods.objects.all()[:10] # 只查询10条数据 goods_serializer = GoodsSerializer(goods, many=True) return Response(goods_serializer.data)
4、配置
url
from goods.views import GoodsListViewurlpatterns = [ url(r'^goods/$', GoodsListView.as_view()), url(r'^api-auth/', include('rest_framework.urls')), url(r'docs/', include_docs_urls(title='接口测试学习'))]
三、前端使用post
提交数据,保存到数据库中
1、在
serializers.py
中添加一个create
的函数class GoodsSerializer(serializers.Serializer): name = serializers.CharField(required=True, max_length=100) click_num = serializers.IntegerField(default=0) market_price =serializers.FloatField(default=0) def create(self, validated_data): """ validated_data会把上面全部的字段接收 """ return Goods.objects.create(**validated_data)
2、视图层使用
post
from rest_framework import statusclass GoodsListView(APIView): def get(self, request, format=None): goods = Goods.objects.all()[:10] goods_serializer = GoodsSerializer(goods, many=True) return Response(goods_serializer.data) def post(self, request,format=None): serializer = GoodsSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data,status=status.HTTP_201_CREATED) else: return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
四、使用ModelSerializer
来书写serializer
1、书写
serializer
from rest_framework import serializersfrom .models import Goodsclass GoodsSerializersModel(serializers.ModelSerializer): """ 使用ModelSerializer更加简便的返回自己想要的字段 """ class Meta: model = Goods fields = ('name', 'click_num', 'market_price', 'add_time')
2、视图层跟上面
APIView
中一样的写- 3、
url
也跟上面APIView
的goods
的一样
五、使用ModelSerializer
如果要返回全部的字段
1、修改上面的
serializer
class GoodsSerializersModel(serializers.ModelSerializer): """ 使用ModelSerializer更加简便的返回自己想要的字段 """ class Meta: model = Goods # fields = ('name', 'click_num', 'market_price', 'add_time') fields = '__all__'
2、其它的都保持不变
六、注意到上面返回的json
外键都是一个id
并没有把外键关联的表的数据也返回
1、序列化外键的表
class CategorySerializer(serializers.ModelSerializer): """ 序列化分类表 """ class Meta: model = GoodsCategory fields = '__all__'
2、在别的
serializers
中实例化class GoodsSerializersModel(serializers.ModelSerializer): """ 使用ModelSerializer更加简便的返回自己想要的字段 """ # 实例化上面的分类表的序列号 category = CategorySerializer() class Meta: model = Goods # fields = ('name', 'click_num', 'market_price', 'add_time') fields = '__all__'
阅读全文
0 0
- django-rest-framework序列化的使用(一)
- Django REST framework教程一:序列化
- django-rest-framework指南(1):序列化
- Django REST Framework(一) 初步使用
- django-rest-framework过滤器的使用(三)
- Django Rest Framework(一)
- Django Rest framework学习(一)
- Django REST framework 序列化与反序列化
- django rest framework 入门1-序列化 Serialization
- django rest framework 入门1-序列化 Serialization
- django rest framework 入门1-序列化 Serialization
- Django-Rest-Framework 教程: 1. 序列化 (Serialization)
- django rest framework 入门1-序列化 Serialization
- Django REST framework 中文教程1:序列化
- Django REST framework使用案例
- django rest framework使用django-filter
- django-rest-framework视图层的使用(二)
- Django rest framework 使用自定义认证方式
- python基础数据类型四
- 开源大数据周刊-第76期
- Extjs-Grid前添加选项框以及多选方式。
- 今日,冬至
- Qt之setCodecForLocale
- django-rest-framework序列化的使用(一)
- Django(三)模型与数据库
- Python 异常错误记录
- sleep 和 wait 的区别
- 解决保存标签到数据库转义成gt和lt等情况
- rabbitMQ第四篇:远程调用
- 创建动画剪辑
- JS中判断对象是否含有某个属性的方法
- table模块/数据表格