老师 你好 ,目前工作中,所有api 接口用的都是post方法,retrieveapiview 我想写一个post 方法 里面调用get 方法 ,好像不行。麻烦老师看下 有什么办法满足这样的需求
"""
from django.http import JsonResponse, HttpResponse
from django.shortcuts import render
# Create your views here.
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from res_demo.models import Student
from res_demo.serializers import StudentSerializer
from rest_framework import mixins
from rest_framework import generics
# @csrf_exempt
# def students(request):
# if request.method=="GET":
# student_li=Student.objects.all()
# serializre = StudentSerializer(student_li,many=True)
# return JsonResponse(serializre.data,safe=False)
#
# elif request.method=="POST":
# data = JSONParser().parse(request)
# serializre=StudentSerializer(data=data)
# if serializre.is_valid():
# serializre.save()
# return JsonResponse(serializre.data,status=201)
# return JsonResponse(serializre.errors,status=400)
#
# @csrf_exempt
# def student_detail(request, pk):
# try:
# student = Student.objects.get(pk=pk)
# except Student.DoesNotExist:
# return HttpResponse(status=404)
#
# if request.method == 'GET':
# serializer = StudentSerializer(student)
# return JsonResponse(serializer.data)
#
# elif request.method == 'PUT':
# data = JSONParser().parse(request)
# serializer = StudentSerializer(student, data=data)
# if serializer.is_valid():
# serializer.save()
# return JsonResponse(serializer.data)
# return JsonResponse(serializer.errors, status=400)
#
# elif request.method == 'DELETE':
# student.delete()
# return HttpResponse(status=204)
class StudentsView(generics.ListAPIView):
"""
查询学生列表
"""
queryset = Student.objects.all()
serializer_class = StudentSerializer
def post(self, request, *args, **kwargs):
print(type(request.data))
json_data:dict=request.data
print(json_data)
id= json_data.get("id")
self.queryset=StudentsView.queryset.filter(id=id).all()
return self.get(request,*args,**kwargs)
class StudentDetail(generics.RetrieveAPIView):
queryset = Student.objects.all()
serializer_class = StudentSerializer
def post(self,request,*args,**kwargs):
print(self.lookup_field)
print(self.lookup_url_kwarg)
self.queryset = StudentsView.queryset.filter(id=5).all()
return self.get(request,*args,**kwargs)
