متدهای post و get گفته شد اما چطور میشه متد put و delete رو برای APIView نوشت؟
درود وقت بخیر
در فریمورک Django Rest Framework (DRF)، برای استفاده از متدهای HTTP PUT و DELETE در کلاسهای `APIView`، میتونین از دو (`mixins`) با نامهای `UpdateModelMixin` و `DestroyModelMixin` استفاده کنید. این دو mixin توابع مربوط به متدهای PUT و DELETE را به کلاس `APIView` اضافه میکنند.
برای استفاده از متد PUT در کلاس `APIView`:
from rest_framework.views import APIView
from rest_framework.mixins import UpdateModelMixin
from rest_framework.response import Response
classMyAPIView(APIView, UpdateModelMixin):
defput(self, request, *args, **kwargs):
# logic of put method# ...return Response("PUT request successful")
# other class methods
برای استفاده از متد DELETE در کلاس `APIView`:
from rest_framework.views import APIView
from rest_framework.mixins import DestroyModelMixin
from rest_framework.response import Response
classMyAPIView(APIView, DestroyModelMixin):
defdelete(self, request, *args, **kwargs):
# logic of delete method# ...return Response("DELETE request successful")
نکته: استفاده از متدهای PUT و DELETE در `APIView` نیاز به تعریف دستی متدهای `put` و `delete` دارد و شما باید منطق مربوط به این متدها را خودتون پیادهسازی کنید. اگر از کلاسهای `GenericAPIView` یا `APIView` همراه با `ViewSet` استفاده میکنه، این منطق به طور خودکار پیادهسازی میشخ و شما فقط باید اطلاعات مربوط به مدل و نام کوئریست را در `queryset` و `lookup_field` تنظیم کنین.
موفق باشید ?
Reza Mobaraki۱۱ مرداد ۱۴۰۲، ۰۷:۴۳
درسته اما زمانی که از serializer.save در put استفاده میکنی شی ساخته میشه. متد serializer.update هم پارامترهای instance و validated_date میگیره که نمیدونم چطور بهش پاس بدم!
salar keshavarzi۱۱ مرداد ۱۴۰۲، ۰۸:۰۵
میتونید این موارد رو آوررایت کنید
و از متد serializer context این کارو انجام بدید ( پاس دادن instance )