Django DRF不同URL对应认证行为异常问题求助
DRF无参数URL返回401,带参数URL正常访问的问题解决
问题原因
Python是大小写敏感语言,你在views.py中定义的视图类是CheckoutView(首字母大写),但urls.py里的视图引用写成了checkoutView.as_view()(首字母小写)。结合你描述的现象,推测仅带参数的URL正确引用了CheckoutView,而无参数的URL用了错误的类名——这导致无参数请求没有应用你设置的permission_classes = [AllowAny]权限规则,触发了DRF默认的IsAuthenticated权限校验,因此返回401错误。
解决方案
将urls.py中两个URL的视图类名统一修正为正确的CheckoutView.as_view(),确保大小写与视图类定义一致:
# url.py urlpatterns = [ path("cart/checkout/<int:new>", CheckoutView.as_view() , name="checkout"), # url 1 path("cart/checkout/", CheckoutView.as_view() , name="checkout"), # url 2 ]
验证要点
- 确认项目中不存在其他名为
checkoutView的视图类,避免标识符混淆 - 修改后重新测试两个URL,均应返回200响应及预期的
total_price数据
内容的提问来源于stack exchange,提问作者Irfan K
相关产品推荐
相关产品推荐

