如何在Modelviewset中发布请求成功时调用函数


# views.py
import schedule_update.send_the_result
class UpdatedTypeViewSet(viewsets.ModelViewSet):
queryset = Updated_Type.objects.all()
serializer_class = UpdatedTypeSerializer
# Is it correct to code here, if I would like to call function when post request succeed, and how?
# send_to_redmine.py
def Send_The_Result():
# get the data from request and send it to redmine.
if __name__ == '__main__':
Send_The_Result()

这是我的源代码,我在Modelviewset中遇到了两个问题。

  1. 在Modelviewset中发布请求成功时,是否可以调用Send_The_Result
  2. 发送post请求时,如何将数据带入Send_the_Result

如果需要任何进一步的信息,请告诉我,谢谢。

Django Rest Framework是Django的抽象,通过与基本HTTP协议几乎没有什么不同的操作来实现Web方法。例如:POST是通过create方法实现的。

等效ModelViewSet方法:

def create(self, *args, **kwargs):
return super().create(*args, **kwargs)

ModelViewSet中的create方法调用序列化程序,评估请求,如果有效,则通过Model存储在数据库中并返回响应。

因此,这给了您三个级别的空间,您希望在其中执行some_function_on_successful_task_completion

  • 您可以覆盖视图中的create方法
  • 您可以在Serializer的create方法中重写
  • 您可以在Model的save方法中进行重写

例如,在您的型号中:

def save(self, *args, **kwargs):
# normal stuff, save to db.
# easier here, as you have every information you need to perform operations
return obj

相关内容

  • 没有找到相关文章

最新更新