Django rest framework 为什么“detail\u route”的DRF文档中的“pk=None”?它是否必须默认为无?

Django rest framework 为什么“detail\u route”的DRF文档中的“pk=None”?它是否必须默认为无?,django-rest-framework,Django Rest Framework,此处:detail\u路线示例如下: @detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf]) def set_password(self, request, pk=None): pk=None是第三个参数。当转到URLusers/{pk}/change password/$时,可以访问此路由。我的问题是,pk是否总是提供?为什么默认值为“无”?难道不应该是: @detail_route(methods=

此处:
detail\u路线
示例如下:

@detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf])
    def set_password(self, request, pk=None):
pk=None
是第三个参数。当转到URL
users/{pk}/change password/$
时,可以访问此路由。我的问题是,
pk
是否总是提供?为什么默认值为“无”?难道不应该是:

@detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf])
    def set_password(self, request, pk):

??根据我的理解,用户访问此路由的唯一方法是在url
users/{pk}/change password/$
中输入
pk
值(当可能没有给出值时不应该使用默认值,如果没有,则默认为
None
)?

这主要是风格问题。由于Django url解析方法是在正则表达式中使用命名组时将关键字参数传递给视图,并且DRF使用命名组,因此我们倾向于使用关键字“样式”符号。

我90%确定这是一个文档问题,源于两年前的更改,我建议大家在GitHub上继续关注它。好吧,既然Django在使用命名组时会将关键字参数传递给视图,那么既然DRF使用命名组,就不需要
pk
?为什么它是可选的?这里的“=None”只是将参数标记为关键字1。只能需要位置参数。简单地把“=None”读作标记,使参数成为关键字1。这有点违反直觉,因为仍在学习Django和DRF的人可能会认为pk在某些情况下是无的。这导致了怀疑和这些问题。不过这不是什么大问题。