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

原文地址:https://www.cnblogs.com/zhaoyunlong/p/9398256.html