Django djoser 有两个相同的 url

Django djoser has two same urls

我正在阅读 Django 的 Djoser 框架。

我发现有两个 url 模式要包含,它们都是相同的:

urlpatterns = [
    (...),
    url(r'^auth/', include('djoser.urls')),
    url(r'^auth/', include('djoser.urls.jwt')),
]

我以为 Django 总是拿第一场比赛

怎么可能选择了第二条路径?

您提供的url模式是:

urlpatterns = [
    (...),
    url(r'^auth/', include('djoser.urls')),
    url(r'^auth/', include('djoser.urls.jwt')),
]

从函数的用法include可以看出,这些模式只是包括其他模式。参见 Including other URLconfs [Django docs]

如果我们查看 'djoser.urls' (GitHub) 中的 url,它们基本上看起来像:

router = DefaultRouter()
router.register("users", views.UserViewSet)

User = get_user_model()

urlpatterns = router.urls

所以基本上使用 include 这最终会生成一堆看起来像 auth/users/...

的 url 模式

转到 'djoser.urls.jwt' (GitHub) 中的模式:

urlpatterns = [
    re_path(r"^jwt/create/?", views.TokenObtainPairView.as_view(), name="jwt-create"),
    re_path(r"^jwt/refresh/?", views.TokenRefreshView.as_view(), name="jwt-refresh"),
    re_path(r"^jwt/verify/?", views.TokenVerifyView.as_view(), name="jwt-verify"),
]

基本上以 auth/jwt/create 结束,等等

看这个模式明显不同所以不用担心