如何创建具有相同路径但不同 HTTP 方法 DRF 的 2 个操作
How to create 2 actions with same path but different HTTP methods DRF
所以我试图在同一个方法下执行不同的操作,但最后定义的方法是唯一有效的方法,有没有办法做到这一点?
views.py
class SomeViewSet(ModelViewSet):
...
@detail_route(methods=['post'])
def methodname(self, request, pk=None):
... action 1
@detail_route(methods=['get'])
def methodname(self, request, pk=None):
... action 2
您是否尝试根据 HTTP 请求类型执行操作?喜欢 post 请求执行操作 1 和获取请求执行操作 2?如果是这样,请尝试
def methodname(self, request, pk=None):
if request.method == "POST":
action 1..
else
action 2..
我找到的最合理的方法here:
class MyViewSet(ViewSet):
@action(detail=False)
def example(self, request, **kwargs):
"""GET implementation."""
@example.mapping.post
def create_example(self, request, **kwargs):
"""POST implementation."""
该方法提供了在另一个具有正确值的视图集方法中使用 self.action
的可能性。
所以我试图在同一个方法下执行不同的操作,但最后定义的方法是唯一有效的方法,有没有办法做到这一点?
views.py
class SomeViewSet(ModelViewSet):
...
@detail_route(methods=['post'])
def methodname(self, request, pk=None):
... action 1
@detail_route(methods=['get'])
def methodname(self, request, pk=None):
... action 2
您是否尝试根据 HTTP 请求类型执行操作?喜欢 post 请求执行操作 1 和获取请求执行操作 2?如果是这样,请尝试
def methodname(self, request, pk=None):
if request.method == "POST":
action 1..
else
action 2..
我找到的最合理的方法here:
class MyViewSet(ViewSet):
@action(detail=False)
def example(self, request, **kwargs):
"""GET implementation."""
@example.mapping.post
def create_example(self, request, **kwargs):
"""POST implementation."""
该方法提供了在另一个具有正确值的视图集方法中使用 self.action
的可能性。