Django:相同的方法不同 url
Django: same method different url
我的 url 看起来像:
/api/v1/files/
/api/v1/files/100
使用相同的函数来匹配它们是一种好的做法吗?就像下面这样:
class FileView(APIView):
parser_classes = (MultiPartParser,)
permission_classes = (IsAuthenticated,)
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(FileView, self).dispatch(request, *args, **kwargs)
def post(self, request, pk = None):
if pk is not None:
Do something
else:
do something
如何在基于Class的视图中使用不同的功能?
谢谢
我认为拥有单独的方法比基于 pk
分支的单一方法更清晰。通过查看视图的方法而不是必须遵循(尽管简单的)控制流,更容易理解哪个逻辑去哪里。
我的第一个建议是检查 viewsets that Django Rest Framework provides 并查看在它提供的给定方法内执行您的逻辑。这似乎最适合您的用例。
另一种选择是查看 DRF generic views which are based off these mixins。这些允许比视图集更多的控制和自定义,如果您不需要视图集提供的所有功能,有时是更好的选择。
我的 url 看起来像:
/api/v1/files/
/api/v1/files/100
使用相同的函数来匹配它们是一种好的做法吗?就像下面这样:
class FileView(APIView):
parser_classes = (MultiPartParser,)
permission_classes = (IsAuthenticated,)
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(FileView, self).dispatch(request, *args, **kwargs)
def post(self, request, pk = None):
if pk is not None:
Do something
else:
do something
如何在基于Class的视图中使用不同的功能? 谢谢
我认为拥有单独的方法比基于 pk
分支的单一方法更清晰。通过查看视图的方法而不是必须遵循(尽管简单的)控制流,更容易理解哪个逻辑去哪里。
我的第一个建议是检查 viewsets that Django Rest Framework provides 并查看在它提供的给定方法内执行您的逻辑。这似乎最适合您的用例。
另一种选择是查看 DRF generic views which are based off these mixins。这些允许比视图集更多的控制和自定义,如果您不需要视图集提供的所有功能,有时是更好的选择。