如何解决如何在 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 中有两个问题。
- 是否可以在 Modelviewset 中发布请求成功时调用 Send_The_Result?
- 当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,**kwargs):
# normal stuff,save to db.
# easier here,as you have every information you need to perform operations
return obj
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。