feat: 100% async - native async serializers (adata/asave/acreate), async cache (redis.asyncio), view call-site migration

This commit is contained in:
async-upgrade
2026-09-06 14:36:41 +08:00
parent 8f488fcaaa
commit 571641e539
18 changed files with 81 additions and 81 deletions
+3 -3
View File
@@ -25,7 +25,7 @@ class ColorHistoryListView(APIView):
created_at__gte=cutoff
).order_by('-created_at')[:50]]
serializer = ColorHistorySerializer(histories, many=True)
return Response(serializer.data)
return Response(await serializer.adata)
async def post(self, request):
color = request.data.get('color', '')
@@ -43,13 +43,13 @@ class ColorHistoryListView(APIView):
existing.created_at = timezone.now()
await existing.asave()
serializer = ColorHistorySerializer(existing)
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(await serializer.adata, status=status.HTTP_200_OK)
history = await ColorHistory.objects.acreate(
user=request.user,
color=color
)
serializer = ColorHistorySerializer(history)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(await serializer.adata, status=status.HTTP_201_CREATED)
class ColorHistoryDetailView(APIView):
+3 -3
View File
@@ -35,7 +35,7 @@ class CompressionHistoryListView(APIView):
return JsonResponse({
'success': True,
'data': serializer.data,
'data': await serializer.adata,
'total': total,
'page': page,
'page_size': page_size
@@ -50,10 +50,10 @@ class CompressionHistoryListView(APIView):
serializer = CompressionHistorySerializer(data=data)
if serializer.is_valid():
# DRF 序列化器 save() 为同步 ORM 操作,sync_to_async 兜底
await sync_to_async(serializer.save)()
await serializer.asave()
return JsonResponse({
'success': True,
'data': serializer.data
'data': await serializer.adata
}, status=status.HTTP_201_CREATED)
return JsonResponse({
+3 -3
View File
@@ -24,7 +24,7 @@ class ToolCategoryListView(APIView):
serializer = ToolCategorySerializer(categories, many=True)
return JsonResponse({
'success': True,
'data': serializer.data
'data': await serializer.adata
})
@@ -70,7 +70,7 @@ class ToolListView(APIView):
tool_list = [t async for t in tools]
serializer = ToolSerializer(tool_list, many=True)
data = serializer.data
data = await serializer.adata
# 构建 favorites_count 映射
favorites_count_map = {
@@ -111,7 +111,7 @@ class ToolDetailView(APIView):
try:
tool = await Tool.objects.select_related('category').aget(pk=pk, is_enabled=True)
serializer = ToolSerializer(tool)
data = serializer.data
data = await serializer.adata
if request.user.is_authenticated:
data['is_favorited'] = await ToolFavorite.objects.filter(
user=request.user, tool=tool