django restful里序列化和反序列化是什么意思,怎么使用 如何优化 Django REST Framework 的性能

django restful\u91cc\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u662f\u4ec0\u4e48\u610f\u601d\uff0c\u600e\u4e48\u4f7f\u7528

\u5355\u72ec\u751f\u6210{"detailed": null, "established": "1990-01-01"}\u8fd9\u4e2a\u5b57\u5178\u5bf9\u8c61\uff0c\u7136\u540e\u628a\u8fd9\u4e2a\u5b57\u5178\u5bf9\u8c61\u52a0\u5230\u4e00\u4e2a\u7a7a\u5217\u8868[]\u91cc\uff0c\u7136\u540e\u628a\u8fd9\u4e2a\u5217\u8868Josn\u8f93\u51fa\u5c31Ok\u4e86\u3002

\u89e3\u51b3 Django \u300c\u61d2\u60f0\u300d\u7684\u57fa\u672c\u65b9\u6cd5
\u73b0\u5728\u6211\u4eec\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u7684\u65b9\u6cd5\u5c31\u662f\u300c\u9884\u52a0\u8f7d\u300d\u3002\u4ece\u672c\u8d28\u4e0a\u8bb2\uff0c\u5c31\u662f\u4f60\u63d0\u524d\u8b66\u544a Django ORM \u4f60\u8981\u4e00\u904d\u53c8\u4e00\u904d\u7684\u544a\u8bc9\u5b83\u540c\u6837\u65e0\u804a\u7684\u6307\u4ee4\u3002\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u5728 DRF \u5f00\u59cb\u83b7\u53d6\u524d\u5f88\u7b80\u5355\u5730\u52a0\u4e0a\u8fd9\u53e5\u8bdd\u5c31\u641e\u5b9a\u4e86\uff1a
queryset = queryset.prefetch_related('orders')
\u5f53 DRF \u8c03\u7528\u4e0a\u8ff0\u76f8\u540c\u5e8f\u5217\u5316 customers \u65f6\uff0c\u51fa\u73b0\u7684\u662f\u8fd9\u79cd\u60c5\u51b5\uff1a
\u83b7\u53d6\u6240\u6709 customers \uff08\u6267\u884c\u4e24\u4e2a\u5f80\u8fd4\u6570\u636e\u5e93\u64cd\u4f5c\uff0c\u7b2c\u4e00\u4e2a\u662f\u83b7\u53d6 customers\uff0c\u7b2c\u4e8c\u4e2a\u83b7\u53d6\u76f8\u5173 customers \u7684\u6240\u6709\u76f8\u5173\u7684 orders\u3002\uff09
\u5bf9\u4e8e\u7b2c\u4e00\u4e2a\u8fd4\u56de\u7684 customers\uff0c\u83b7\u53d6\u5176 order \uff08\u4e0d\u9700\u8981\u8bbf\u95ee\u6570\u636e\u5e93\uff0c\u6211\u4eec\u5df2\u7ecf\u5728\u4e0a\u4e00\u6b65\u4e2d\u83b7\u53d6\u4e86\u6240\u9700\u8981\u7684\u6570\u636e\uff09
\u5bf9\u4e8e\u7b2c\u4e8c\u4e2a\u8fd4\u56de\u7684 customers\uff0c\u83b7\u53d6\u5176 order \uff08\u4e0d\u9700\u8981\u8bbf\u95ee\u6570\u636e\u5e93\uff09
\u5bf9\u4e8e\u7b2c\u4e09\u4e2a\u8fd4\u56de\u7684 customers\uff0c\u83b7\u53d6\u5176 order \uff08\u4e0d\u9700\u8981\u8bbf\u95ee\u6570\u636e\u5e93\uff09
\u5bf9\u4e8e\u7b2c\u56db\u4e2a\u8fd4\u56de\u7684 customers\uff0c\u83b7\u53d6\u5176 order \uff08\u4e0d\u9700\u8981\u8bbf\u95ee\u6570\u636e\u5e93\uff09
\u5bf9\u4e8e\u7b2c\u4e94\u4e2a\u8fd4\u56de\u7684 customers\uff0c\u83b7\u53d6\u5176 order \uff08\u4e0d\u9700\u8981\u8bbf\u95ee\u6570\u636e\u5e93\uff09
\u5bf9\u4e8e\u7b2c\u516d\u4e2a\u8fd4\u56de\u7684 customers\uff0c\u83b7\u53d6\u5176 order \uff08\u4e0d\u9700\u8981\u8bbf\u95ee\u6570\u636e\u5e93\uff09
\u4f60\u53c8\u610f\u8bc6\u5230\uff0c\u4f60\u53ef\u4ee5\u6709\u4e86 \u5f88\u591a customers \uff0c\u5df2\u7ecf\u4e0d\u9700\u8981\u518d\u7ee7\u7eed\u7b49\u5f85\u53bb\u6570\u636e\u5e93\u3002
\u5176\u5b9e Django ORM \u7684\u300c\u9884\u5907\u300d\u662f\u5728\u7b2c1\u6b65\u8fdb\u884c\u8bf7\u6c42\uff0c\u5b83\u5728\u672c\u5730\u9ad8\u901f\u7f13\u5b58\u7684\u6570\u636e\u80fd\u591f\u63d0\u4f9b\u6b65\u9aa42+\u6240\u8981\u6c42\u7684\u6570\u636e\u3002\u4e0e\u4e4b\u524d\u5f80\u8fd4\u6570\u636e\u5e93\u76f8\u6bd4\u4ece\u672c\u5730\u7f13\u5b58\u6570\u636e\u4e2d\u8bfb\u53d6\u6570\u636e\u57fa\u672c\u4e0a\u662f\u77ac\u65f6\u7684\uff0c\u6240\u4ee5\u6211\u4eec\u5728\u6709\u5f88\u591a customers \u65f6\u5c31\u83b7\u5f97\u4e86\u5de8\u5927\u7684\u6027\u80fd\u52a0\u901f\u3002
\u89e3\u51b3 Django REST Framework \u6027\u80fd\u95ee\u9898\u7684\u6807\u51c6\u5316\u6a21\u5f0f
\u6211\u4eec\u5df2\u7ecf\u786e\u5b9a\u4e86\u4e00\u4e2a\u4f18\u5316 Django REST Framework \u6027\u80fd\u95ee\u9898\u7684\u901a\u7528\u6a21\u5f0f\uff0c\u90a3\u5c31\u662f\u6bcf\u5f53\u5e8f\u5217\u5316\u67e5\u8be2\u5d4c\u5957\u5b57\u6bb5\u65f6\uff0c\u6211\u4eec\u5c31\u6dfb\u52a0\u4e00\u4e2a\u65b0\u7684 @staticmethod \u540d\u53eb setup_eager_loading \uff0c\u50cf\u8fd9\u6837\uff1a
class CustomerSerializer(serializers.ModelSerializer):
orders = OrderSerializer(many=True, read_only=True)
def setup_eager_loading(cls, queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.prefetch_related('orders')
return queryset
\u8fd9\u6837\uff0c\u4e0d\u7ba1\u54ea\u91cc\u8981\u7528\u5230\u8fd9\u4e2a\u5e8f\u5217\u5316\uff0c\u90fd\u53ea\u9700\u5728\u8c03\u7528\u5e8f\u5217\u5316\u524d\u7b80\u5355\u8c03\u7528 setup_eager_loading \uff0c\u5c31\u50cf\u8fd9\u6837\uff1a
customer_qs = Customers.objects.all()
customer_qs = CustomerSerializer.setup_eager_loading(customer_qs) # Set up eager loading to avoid N+1 selects
post_data = CustomerSerializer(customer_qs, many=True).data
\u6216\u8005\uff0c\u5982\u679c\u4f60\u6709\u4e00\u4e2a APIView \u6216 ViewSet \uff0c\u4f60\u53ef\u4ee5\u5728 get_queryset \u65b9\u6cd5\u91cc\u8c03\u7528 setup_eager_loading \uff1a
def get_queryset(self):
queryset = Customers.objects.all()
# Set up eager loading to avoid N+1 selects
queryset = self.get_serializer_class().setup_eager_loading(queryset)
return queryset

当服务端的server程序收到客户端的连接后,就创建子进程,并且将子进程的标准输入、标准输出、标准错误重定向到已连接的套接字,然后execl执行pyth.py,这样客户端client和pyth.py程序的交互就相当于在本机控制台上交互是一样的了。 编写客户端...

扩展阅读:un jardin sur le nil ... fashion show tv ... fashion midnight hot ... django-vue-admin ... jade chamber sunshine ... jam a man of fortune ... django unchained ... vogue fashion show ... java windowbuilder ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网