mas*_*lak 1 django python-3.x django-rest-framework drf-extensions
代码如下:
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
Run Code Online (Sandbox Code Playgroud)
现在 pk 未验证为 int,因此会向 db 发出请求,这是我想避免的。有什么方法可以在网址中添加这种类型的验证吗?我可以在不使用路由器的情况下实现这一点,如下所示:
urlpatterns = [
path('users/<int:pk>/', UserViewSet.as_view({'get': 'retrieve'}),
# many other actions have to be added seperately
]
Run Code Online (Sandbox Code Playgroud)
但我的视图集中有很多操作,所有操作都必须单独添加。有没有更干净的方法或包?
使用lookup_value_regex属性作为,
class UserViewSet(ViewSet):
lookup_value_regex = '\d+'
...Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1461 次 |
| 最近记录: |