我的视图集如下所示:
class BoardViewSet(viewsets.GenericViewSet, ...):
@detail_route(methods=["post"])
def register(self, request, pk):
board = self.get_object()
...
当我提出这些请求时,得到以下结果:
POST /board/1234/register -> 200
POST /board/BEEF/register -> 404 NOT FOUND
GET /board/1234/register -> 405 NOT ALLOWED
GET /board/BEEF/register -> 405 NOT ALLOWED
这是名单上最后一项与我有关。对无效的URL执行GET请求会返回不允许的响应,而不是找不到的响应,即使这是无效的URL。我理解为什么会发生这种情况,就Django和DRF的路由工作而言。我的问题有两个:
嗯,您只接受“/board/([^/]+)/register”url上的POST方法,因此返回405状态码似乎是合法的。你知道吗
您应该将视图
lookup_value_regex
设置得更具体一些,以便它只与您期望的ID匹配。这样,如果url regex不匹配,它将跳过该视图并继续,最终以404结束。你知道吗相关问题 更多 >
编程相关推荐