feat: ADRF async views (phase1) + native async serializers (phase2) + async cache infra

This commit is contained in:
async-upgrade
2026-09-06 14:26:17 +08:00
parent 9a6577f71e
commit 8f488fcaaa
55 changed files with 2224 additions and 1513 deletions
+10 -9
View File
@@ -1,5 +1,5 @@
from rest_framework import status
from rest_framework.views import APIView
from adrf.views import APIView
from rest_framework.permissions import IsAuthenticated
from django.utils import timezone
from django.utils.decorators import method_decorator
@@ -36,7 +36,7 @@ class LoginRecordListAPIView(APIView):
],
responses={200: success_response, 401: unauthorized_response},
)
def get(self, request):
async def get(self, request):
user = request.user
page = int(request.query_params.get('page', 1))
page_size = int(request.query_params.get('page_size', 10))
@@ -67,11 +67,12 @@ class LoginRecordListAPIView(APIView):
elif start_date and end_date:
records = records.filter(login_time__date__gte=start_date, login_time__date__lte=end_date)
total = records.count()
total = await records.acount()
start = (page - 1) * page_size
end = start + page_size
serializer = LoginRecordSerializer(records[start:end], many=True)
items = [item async for item in records[start:end]]
serializer = LoginRecordSerializer(items, many=True)
return create_standardized_response(
data={
@@ -99,11 +100,11 @@ class LoginRecordDeleteAPIView(APIView):
],
responses={200: success_response, 401: unauthorized_response, 404: not_found_response},
)
def delete(self, request, pk):
async def delete(self, request, pk):
user = request.user
try:
record = LoginRecord.objects.get(pk=pk, user=user)
record.delete()
record = await LoginRecord.objects.aget(pk=pk, user=user)
await record.adelete()
return create_standardized_response(
code=ResponseCode.SUCCESS,
status_code=status.HTTP_200_OK
@@ -126,9 +127,9 @@ class LoginRecordClearAPIView(APIView):
operation_description='清空当前用户的所有登录记录',
responses={200: success_response, 401: unauthorized_response},
)
def delete(self, request):
async def delete(self, request):
user = request.user
deleted_count, _ = LoginRecord.objects.filter(user=user).delete()
deleted_count, _ = await LoginRecord.objects.filter(user=user).adelete()
return create_standardized_response(
data={'deleted_count': deleted_count},
code=ResponseCode.SUCCESS,