Django Rest Framework是Django的抽象,通过与基本HTTP协议几乎没有什么不同的操作来实现Web方法。例如:
# 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
如果需要任何进一步的信息,请告诉我,谢谢。
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