学习
官方文档:https://www.django-rest-framework.org/
个人博客(参考):https://www.cnblogs.com/knighterrant/p/10553024.html
拷贝官网的中文网:http://www.iamnancy.top/djangorestframework/Home/
简介
rest_framework是实现django前后端分离的框架(django自己也能实现,但这个框架实现起来会更快速)
Viewset生成restful接口
rest_framework实现restful风格的一种方式,快速搭建单表‘增删改查’接口
注意:viewset返回值问题
要序列化的model—models.py
from django.db import models# 编写model,继承使用django的modelsclass User(models.Model):# 用户名username = models.CharField(unique=False,max_length=20,verbose_name="用户名")# 手机号telephone = models.CharField(unique=True,max_length=11,verbose_name="手机号")email = models.EmailField(unique=True,max_length=100,verbose_name="邮箱",null=True)# 昵称# nick_name = models.CharField(unique=False,max_length=20,verbose_name="昵称")# 头像avatar = models.CharField(max_length=200,verbose_name="头像")# 创建时间create_time = models.DateTimeField(auto_now_add=True,verbose_name="创建时间")# 创建时间update_time = models.DateTimeField(auto_now_add=True,verbose_name="创建时间")# 是否可用is_active = models.BooleanField(default=True,verbose_name="是否可用")#方便view操作objects = models.Manager()class Meta:db_table = "tb_user"# django的admin界面的后台展示的数据verbose_name = "用户"verbose_name_plural = verbose_name
序列化的文件(自己写)—serializers.py
from rest_framework import serializersfrom .models import User #导入User的model类(上面那段代码的类)class UserSerializer(serializers.ModelSerializer):class Meta:model = Userfields = "__all__"# 这两种情况不能同时使用# 1.取全部字段# fields = "__all__"# 根据需求排除字段# exclude = ["id", "category","author", "publisher"]# 2.自定义包含字段# fields = ["id", "title", "pub_time"]# 输出:[{"id": 1, "title": "python开发", "pub_time": "2011-08-27"},...]
视图文件—views.py
from rest_framework import viewsetsfrom .models import Userfrom .serializers import UserSerializer#下面这三行代码已经包含了增删改检索操作class UserInfoView(viewsets.ModelViewSet):queryset = User.objects.all()serializer_class = UserSerializer
路由—urls.py
from django.urls import pathfrom . import views# 使用viewset时使用的路由from rest_framework.routers import DefaultRouterrouter = DefaultRouter()router.register("drf/viewset",views.UserInfoView,basename="viewset")# 将rest_framework实现的viewset也添加django的路由中urlpatterns = [] + router.urls
备注:因为增删改查的路由是自动生成出来的,所以得用这种方式导入路由

解决viewset返回值code
https://www.jianshu.com/p/9cf6540e690d
https://blog.csdn.net/qq_35753140/article/details/90026423
serializers序列化
1、用来序列化数据ORM→JSON
from rest_framework import serializers
