验证pk作为int in drf视图集检索URL



代码如下:

class UserViewSet(ViewSet):
    # ... Many other actions
    def list(self):
        # list implementation
    def retrieve(self, request, pk):
        # manual pk int validation
router = DefaultRouter()
router.register(r"users", UserViewSet, basename="users")
urlpatterns = router.urls

现在没有验证PK,因为INT因此提出了对DB的请求,我想避免使用。有什么办法可以在URL中添加该类型的验证?我可以在不使用这样的路由器的情况下实现这一目标:

urlpatterns = [
    path('users/<int:pk>/', UserViewSet.as_view({'get': 'retrieve'}),
    # many other actions have to be added seperately
]

,但是我的视图集中有很多操作,所有这些动作都必须单独添加。有没有更干净的方法或包裹?

使用 lookup_value_regex 属性为,

class UserViewSet(ViewSet):
    lookup_value_regex = 'd+'
    ...

最新更新