3 序列化组件

class BookSerializer(serializers.Serializer):

    title = serializers.CharField( max_length=32)
price =serializers.DecimalField(max_digits=5,decimal_places=2) # 一对多字段
publish_email=serializers.CharField(max_length=32,source="publish.email")
publish_name=serializers.CharField(max_length=32,source="publish.name") # 多对多字段
# authors=serializers.CharField(max_length=32,source="authors.all")
authors=serializers.SerializerMethodField()
def get_authors(self,obj):
ret=[]
for i in obj.authors.all():
ret.append({"name":i.name,"age":i.name})
return ret ''' serializer=BookSerializer(book_list,many=True)
serializer.data: temp=[]
for obj in book_list:
temp.append({
"title":obj.title,
"price":obj.price,
"publish":obj.publish.email,
if 字段SerializerMethodField:
"authors":get_authors(obj)
}) json.dumps(temp) ''' class BookSerializer(serializers.ModelSerializer):
class Meta:
model=Book
# fields=["title","price"]
fields="__all__" class BookView(APIView): def get(self,request):
book_list=Book.objects.all()
serializer=BookSerializer(book_list,many=True) return Response(serializer.data) def post(self,request): print(request.data) serializer=BookSerializer(data=request.data,many=False) if serializer.is_valid():
serializer.save() # create操作 return Response(serializer.data) # 序列化提交数据
else:
return Response(serializer.errors) # 序列化错误信息 今日内容: 1 序列化组件 序列化: queryset------>[{},{},{}]
obj ------>{} 2 视图组 class AuthorsView(ModelViewSet):
queryset = Author.objects.all()
serializer_class = AuthorSerializer #url(r'^authors/$', views.AuthorsView.as_view({"get":"list","post":"create"})),
#url(r'^authors/$', ViewSetMixin.as_view({"get":"list","post":"create"})),
#url(r'^authors/$', ViewSetMixin.view),
一旦用户访问,get访问authors/:
ViewSetMixin.view(reqeust):
for method, action in actions.items(): # {"get":"list","post":"create"}
handler = getattr(self, action) # handler===self.list
setattr(self, method, handler) # self.get=self.list return self.dispatch(request, *args, **kwargs)
#
APIView.dispatch(request): handler = getattr(self, request.method.lower()) # self.list
response = handler(request, *args, **kwargs)
# def list(self.request):
` # return ..... return response ################### #url(r'^authors/(?P<pk>\d+)/', views.AuthorsView.as_view({"get":"retrieve","delete":"destroy","put":"update"})),
#url(r'^authors/$', ViewSetMixin.as_view({"get":"retrieve","delete":"destroy","put":"update"})),
#url(r'^authors/$', ViewSetMixin.view),
一旦用户访问,get访问authors/1:
ViewSetMixin.view(reqeust):
for method, action in actions.items(): # {"get":"retrieve","delete":"destroy","put":"update"}
handler = getattr(self, action) # handler===self.retrieve handler=== destroy handler===update
setattr(self, method, handler) # self.get=self.retrieve self.delete=self.destroy self.put=self.update return self.dispatch(request, *args, **kwargs)
#
APIView.dispatch(request): handler = getattr(self, request.method.lower()) # self.retrieve
response = handler(request, *args, **kwargs)
# def retrieve(self.request):
` # return ..... return response

day100-序列化组件的更多相关文章

  1. DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer

      DjangoRestFramework学习二之序列化组件.视图组件   本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...

  2. cvb源码分析,resful规范,drf,drf序列化组件,95

    1 CBV的源码分析 -Class Base View(基于类的视图) -Function Base View(基于函数的视图) -def as_view 类方法 -def view:类方法内部,闭包 ...

  3. rest-framework之APIView 序列化组件

    rest-framework之APIView 一 安装djangorestframework 方式一:pip3 install djangorestframework 方式二:pycharm图形化界面 ...

  4. drf 之序列化组件

    序列化 把Python中对象转换为json格式字符串 反序列化 把json格式转为为Python对象. 用orm查回来的数据都是都是一个一个的对象, 但是前端要的是json格式字符串. 序列化两大功能 ...

  5. DRF 序列化组件

    Serializers 序列化组件 Django的序列化方法 class BooksView(View): def get(self, request): book_list = Book.objec ...

  6. python全栈开发day99-DRF序列化组件

    1.解释器组件源码分析 https://www.processon.com/view/link/5ba0a8e7e4b0534c9be0c968 2.基于CBV的接口设计 1).django循环que ...

  7. Serializers 序列化组件

    Serializers 序列化组件   为什么要用序列化组件 当我们做前后端分离的项目~~我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转 ...

  8. django rest_framework 序列化组件详解

    为什么要用序列化组件 当我们做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到 ...

  9. DRF框架之 serializers 序列化组件

    1. 什么是序列化,其实在python中我们就学了序列化工具json工具,就是吧信息存为类字典形式 2. DRF框架自带序列化的工具: serializers 3. DRF框架 serializers ...

  10. drf3 Serializers 序列化组件

    为什么要用序列化组件 做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 给前端数据的时候都要转成json格式,那就需要对从数据库拿到的数据进行序列化. ...

随机推荐

  1. HDU 3333 Turing Tree 离线 线段树/树状数组 区间求和单点修改

    题意: 给一个数列,一些询问,问你$[l,r]$之间不同的数字之和 题解: 11年多校的题,现在属于"人尽皆知傻逼题" 核心思想在于: 对于一个询问$[x,R]$ 无论$x$是什么 ...

  2. JS导出excel设置下载的标题/与angular结合冲突

    2017.8更新 此功能与angular结合使用时,最后一行 document.getElementById("dlink").click(); 与angular的ng-click ...

  3. tcpdump抓取mysql语句

    抓包工具tcpdump的使用,抓取具体的sql语句 [root@test7_chat_api_im ~]# tcpdump -s -l - |strings tcpdump: listening on ...

  4. maven项目板块的pom.xml配置

    项目名为helloweb 项目文件结构图1 helloweb>pom.xml内容如下: <project xmlns="http://maven.apache.org/POM/4 ...

  5. Android apk互调

    1.启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activity ComponentName componetName ...

  6. python与用户交互、数据类型

    一.与用户交互 1.什么是用户交互: 程序等待用户输入一些数据,程序执行完毕反馈信息. 2.如何使用 在python3中使用input,input会将用户输入的如何内容存为字符串:在python中分为 ...

  7. 【进阶3-3期】深度广度解析 call 和 apply 原理、使用场景及实现(转)

    这是我在公众号(高级前端进阶)看到的文章,现在做笔记  https://github.com/yygmind/blog/issues/22 call() 和 apply() call() 方法调用一个 ...

  8. 表单,table的css

    table{table_layout:fixed;border-collapse: collapse;border-spacing: 0}border-collapse: collapse 边框合并在 ...

  9. Confluence 6 用户目录图例 - 连接 Jira

    上面的图:Confluence 连接到 JIRA 为用户管理. https://www.cwiki.us/display/CONFLUENCEWIKI/Diagrams+of+Possible+Con ...

  10. 新建maven项目错误处理

    1.如果新建maven 项目确省maven dependencies,则在存在问题工程的.classpath末尾 加上 <classpathentry kind="con"  ...