zoukankan      html  css  js  c++  java
  • REST Framework

    REST Fromework就是对你的数据库的表进行字段的序列化

    以前是我们取出来对相应的进行序列化 但是这个不仅仅能序列化 还能进行深度查找

    你需要现在python中装你一个djangorestframework

    pip install djangorestframework

    如果你的 pip报错你需要先升级你的pip

    python -m pip install --upgrade pip

     然后你使用的时候从导入这些模块中的内容

    from rest_framework import serializers

    使用的时候你需要给你的对应的表的字段进行关联:

    class LW(serializers.Serializer):
        # 用serializers和你的字段一一进行关联 就是对你的表中的字段进行 一一序列化
        id = serializers.IntegerField()
    
        title = serializers.CharField()
        create_time = serializers.DateTimeField()
    
        type = serializers.IntegerField()
        school = serializers.CharField(source='school.name') # score是对你的后面的内容直接查找 如果是属性就直接查找 是方法就返回


    score是对你的后面的内容直接查找 如果是属性就直接查找 是方法就返回

    上面写的是需要一个一个字段进行关联这个太麻烦了  我们可以进行简便写法:

    class LL(serializers.ModelSerializers):
        type = serializers.CharField(source = 'get_type_display')  # get_type_display 是一个方法是查找对应额type字段中的对应的中文
    
        class Meta:
            model = Article   # 让你的表和这个类关联起来
            
            fields = '__all__'  # 这个是查找你的对应的表中的所有的字段
            
            depth = 1  # 查找你的关联的深度 因为可能你关联的那个表还关联其他的表
            
    class LW(serializers.Serializer):
        # 用serializers和你的字段一一进行关联 就是对你的表中的字段进行 一一序列化
        id = serializers.IntegerField()
    
        title = serializers.CharField()
        create_time = serializers.DateTimeField()
    
        type = serializers.IntegerField()
        school = serializers.CharField(source='school.name') # score是对你的后面的内容直接查找 如果是属性就直接查找 是方法就返回
    
    
    
    class LL(serializers.ModelSerializer):
        type = serializers.CharField(source = 'get_type_display')  # get_type_display 是一个方法是查找对应额type字段中的对应的中文
    
        class Meta:
            model = Article   # 让你的表和这个类关联起来
    
            fields = '__all__'  # 这个是查找你的对应的表中的所有的字段
    
            depth = 1  # 查找你的关联的深度 因为可能你关联的那个表还关联其他的表
    
    
    
    def article(rquest):
        article_list= Article.objects.all()
    
        nice = LL(article_list,many = True)   # many 是因为你的查找到的query_set是很多的对象所以你需要用到many  如果不用这个会报错 如果就一个就不用写
        print(nice.data)  # data是的到的序列化后的对象
        return JsonResponse(nice.data,safe=False)    




    # 这种是找到一个的时候可以省略many 然后得到的是字典类型的 也不用写safe=false
    def article_detial(request,id):

    article_obj = Article.objects.filter(id = id).first()

    nn = LL(article_obj) # 因为指定了是哪一个 得到的就是一个字典 就这一个不用加many

    return JsonResponse(nn.data) # 字典类型的不用加safe = false

  • 相关阅读:
    openstack trove实例状态转换条件--Mitaka版本
    trove module使用说明
    openstack trove mongodb配置项
    openstack trove weekly meeting时间即将更改
    openstack trove redis配置项
    trove database功能总结
    openstack trove 数据库镜像构建列表
    openstack trove主要贡献公司-Tesora被Stratoscale收购
    openstack trove,使pylint忽略错误
    十件你需要知道的事,关于openstack-trove(翻译)
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/9398256.html
Copyright © 2011-2022 走看看