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