学习
官方文档: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

  1. from django.db import models
  2. # 编写model,继承使用django的models
  3. class User(models.Model):
  4. # 用户名
  5. username = models.CharField(unique=False,max_length=20,verbose_name="用户名")
  6. # 手机号
  7. telephone = models.CharField(unique=True,max_length=11,verbose_name="手机号")
  8. # email
  9. email = models.EmailField(unique=True,max_length=100,verbose_name="邮箱",null=True)
  10. # 昵称
  11. # nick_name = models.CharField(unique=False,max_length=20,verbose_name="昵称")
  12. # 头像
  13. avatar = models.CharField(max_length=200,verbose_name="头像")
  14. # 创建时间
  15. create_time = models.DateTimeField(auto_now_add=True,verbose_name="创建时间")
  16. # 创建时间
  17. update_time = models.DateTimeField(auto_now_add=True,verbose_name="创建时间")
  18. # 是否可用
  19. is_active = models.BooleanField(default=True,verbose_name="是否可用")
  20. #方便view操作
  21. objects = models.Manager()
  22. class Meta:
  23. db_table = "tb_user"
  24. # django的admin界面的后台展示的数据
  25. verbose_name = "用户"
  26. verbose_name_plural = verbose_name

序列化的文件(自己写)—serializers.py

  1. from rest_framework import serializers
  2. from .models import User #导入User的model类(上面那段代码的类)
  3. class UserSerializer(serializers.ModelSerializer):
  4. class Meta:
  5. model = User
  6. fields = "__all__"
  7. # 这两种情况不能同时使用
  8. # 1.取全部字段
  9. # fields = "__all__"
  10. # 根据需求排除字段
  11. # exclude = ["id", "category","author", "publisher"]
  12. # 2.自定义包含字段
  13. # fields = ["id", "title", "pub_time"]
  14. # 输出:[{"id": 1, "title": "python开发", "pub_time": "2011-08-27"},...]

视图文件—views.py

  1. from rest_framework import viewsets
  2. from .models import User
  3. from .serializers import UserSerializer
  4. #下面这三行代码已经包含了增删改检索操作
  5. class UserInfoView(viewsets.ModelViewSet):
  6. queryset = User.objects.all()
  7. serializer_class = UserSerializer

路由—urls.py

  1. from django.urls import path
  2. from . import views
  3. # 使用viewset时使用的路由
  4. from rest_framework.routers import DefaultRouter
  5. router = DefaultRouter()
  6. router.register("drf/viewset",views.UserInfoView,basename="viewset")
  7. # 将rest_framework实现的viewset也添加django的路由中
  8. urlpatterns = [] + router.urls

备注:因为增删改查的路由是自动生成出来的,所以得用这种方式导入路由

rest_framework - 图1

解决viewset返回值code

https://www.jianshu.com/p/9cf6540e690d
https://blog.csdn.net/qq_35753140/article/details/90026423

serializers序列化

1、用来序列化数据ORM→JSON

  1. from rest_framework import serializers