学习
官方文档: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的models
class 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 serializers
from .models import User #导入User的model类(上面那段代码的类)
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = "__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 viewsets
from .models import User
from .serializers import UserSerializer
#下面这三行代码已经包含了增删改检索操作
class UserInfoView(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
路由—urls.py
from django.urls import path
from . import views
# 使用viewset时使用的路由
from rest_framework.routers import DefaultRouter
router = 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