DRF框架入门(一)

DRF框架入门

    • 在新建的serialize.py文件创建序列化器
    • view.py文件编写视图类
    • urls.py定义路由
    • 终端中运行测试
  • 序列化与反序列化
    • 序列化
      • Django模型与串行器的一一对应
        • serializer.py文件中编写的串行器
        • model.py文件
        • 终端 测试查询字段的状态

在新建的serialize.py文件创建序列化器

#定义一些序列化程序
from rest_framework import serializers
from user.models import UserInfo

class UserInfoSerilalizer(serializers.ModelSerializer):
    '''创建序列化器'''
    class Meta:
        model = UserInfo
        # 所有字段都要
        fields = '__all__'

view.py文件编写视图类

from rest_framework.viewsets import ModelViewSet
from user.models import UserInfo
from user.serializers import UserInfoSerilalizer

class UserInfoView(ModelViewSet):
    #queryset查询数据的查询集,存储所有数据的查询数据
    queryset = UserInfo.objects.all()
    #serializer_class用来指定在当前的视图里面进行 序列化与反序列化时使用的序列化器
    serializer_class = UserInfoSerilalizer

urls.py定义路由

from user import views

from rest_framework.routers import DefaultRouter
#定义视图对应的路由器
router = DefaultRouter()
#在路由器中注册视图集
router.register('users',views.UserInfoView,base_name='')

urlpatterns = [

]
urlpatterns += router.urls

定义路由时router = DefaultRouter()后面一定要加(),否则报错
在这里插入图片描述

终端中运行测试

python manage.py runserver

序列化与反序列化

序列化

Django模型与串行器的一一对应

serializer.py文件中编写的串行器

class UserInfoNewSerializer(serializers.Serializer):
    #定义序列化与反序列化所需要的字段
    id = serializers.IntegerField(label='主键',read_only=True)#默认false
    #read_only这个字段,用来表示序列化输出
    name = serializers.CharField(label='用户名',max_length=20)
    phone = serializers.CharField(label='号码',max_length=11)
    addinfo = serializers.StringRelatedField(label='外键地址id', read_only=True)
    # addinfo = serializers.StringRelatedField(label='外键地址id', required=True)
    #required表示在反序列化的过程中必须要传递值
    #read_only这个字段,用来表示序列化输出

注意:如果上面代码用了required=True这回发生错误,如下
在这里插入图片描述
原因:required()表示在反序列化的过程中必须要传递值
read_only这个字段,用来表示序列化输出

model.py文件

class UserInfo(models.Model):

    # 类属性
    name = models.CharField(max_length=20)
    phone = models.CharField(max_length=11)
    addinfo = models.ForeignKey(AddressInfo,on_delete=models.CASCADE)
    #这个是两张表之间的关系,关系写在从表身上,

终端 测试查询字段的状态

ModelSerializer序列化器类支持全面检查它们字段的状态。这在使用modelserialalizer时特别有用,如果您想要确定您创建了哪些字段和验证器集。打开Django shell,然后导入序列化器类,实例化它,并打印对象
DRF框架入门(一)_第1张图片

你可能感兴趣的:(框架)