如何定义调用DRF RatingViewSet自定义action方法的URL?
如何配置URL调用RatingViewSet的自定义方法
1. 注册ViewSet到路由
在项目的urls.py里,用DRF的路由注册器自动生成包含自定义方法的路由,代码示例如下:
from django.urls import include, path from rest_framework.routers import DefaultRouter from . import views # 替换成你的views文件实际路径 router = DefaultRouter() # 注册RatingViewSet,设置基础路由前缀为ratings router.register(r'ratings', views.RatingViewSet) urlpatterns = [ path('', include(router.urls)), # 其他项目URL配置... ]
2. 访问自定义方法的URL格式
结合注册时的基础前缀和@action里定义的url_path=r'<int:user>/<int:pizza>',完整的访问URL格式为:/ratings/<用户ID>/<披萨ID>/
比如用户ID是2、披萨ID是7时,直接请求/ratings/2/7/就能调用get_user_pizza_rating方法。
补充说明
你代码中注释的正则写法((?P<user>\d+)/(?P<pizza>\d+)/)和当前用的<int:user>/<int:pizza>路径转换器写法都有效,DRF 3.10及以上版本支持后者这种更简洁易读的语法。另外因为设置了detail=False,这个路由挂在整个ViewSet的基础路径下,而非单个评分实例的路径。
内容的提问来源于stack exchange,提问作者tn sduser
相关产品推荐
相关产品推荐

