【问题标题】:Django djoser has two same urlsDjango djoser 有两个相同的 url
【发布时间】:2021-07-01 07:10:43
【问题描述】:

我正在阅读有关 Django 的 Djoser 框架。

我发现有两个url模式要包含,两者都是一样的:

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

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

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

【问题讨论】:

    标签: django url django-authentication djoser


    【解决方案1】:

    你给出的 urlpatterns 是:

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

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

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

    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等结尾。

    这样看,模式明显不同,所以不用担心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多