Вопрос о принципах работы сериализаторов и представлений в Django rest framework
Я пытаюсь построить REST api с помощью Django Rest Framework и испытываю трудности с пониманием того, как вещи связаны друг с другом в плане того, когда нам нужно использовать пользовательские функции.
У меня views.py
вот так
class myAPIView(viewsets.ModelViewSet):
queryset = myTable.objects.all()
serializer_class = mySerializer
это моя serializer.py
class myserializer(serializers.ModelSerializer):
class Meta:
model = myTable
fields = "__all__"
def create(self, validated_data):
#doing some operation here and save validated data
def update(self, instance, validated_data):
#doing some operation here and save validated data
Я хочу добавить некоторую пользовательскую функцию, чтобы сделать, скажем, отправку электронной почты с обработанными данными.
Когда я добавляю функцию my_email_sender
, ничего не происходит (ничего не выводится в терминал).
class myAPIView(viewsets.ModelViewSet):
queryset = myTable.objects.all()
serializer_class = mySerializer
def my_email_func():
print("Hey I'm email function")
my_email_sender()
OTH, когда вы делаете это внутри serializer
его печать на экран.
Я действительно не знаю, что это my_email_func
должно быть внутри views.py
какой-то CRUD
операционной функции, как def create(), def update() etc..
.
Я также не знаю, почему мы не можем вызвать ее из views.py?
Заранее благодарю за ответ!
Вам просто нужно создать функцию get
и вызвать внутри нее свою функцию
должно быть что-то вроде этого:
class myAPIView(viewsets.ModelViewSet):
queryset = myTable.objects.all()
serializer_class = mySerializer
def my_email_func():
print("Hey I'm email function")
my_email_sender()
def get(self, request, *args, **kwargs):
my_email_func()
return Response(status=status.HTTP_200_OK)
и затем создайте URL в urls.py
, который ссылается на это представление, и вызовите конечную точку методом get из postman или браузера
Надеюсь, это решит вашу проблему!