【问题标题】:How to call function when post request succeed in Modelviewset在Modelviewset中发布请求成功时如何调用函数
【发布时间】:2021-06-08 04:30:55
【问题描述】:
# 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 中遇到了 2 个问题。

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

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

【问题讨论】:

    标签: post django-rest-framework django-rest-viewsets


    【解决方案1】:

    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
    

    【讨论】:

    • 感谢分享,我已经重写了Modelviewset中的create函数,并成功插入了函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多