【问题标题】:How to disable username change in Djoser?如何在 Djoser 中禁用用户名更改?
【发布时间】:2019-04-09 00:27:06
【问题描述】:

我没有在文档中找到有关如何排除/禁用 Djoser 提供的任何端点的任何信息。我可以在它的 urlpatterns 中查找一个并将其删除,但我想知道是否有更丑陋的方法可以做到这一点。

【问题讨论】:

  • 目前不可能。

标签: django djoser


【解决方案1】:

在包含 djoser 的 URL 之前,您可以编写一个返回错误代码的自定义视图并在您自己的 urls.py 中提供它,以抢占对特定端点的访问。

它不如设置支持这一点那么理想,但除非/除非应用程序支持这一点,否则用你自己的 URL 覆盖它是一种无需维护应用程序的修改本地版本即可完成你所要求的事情的方法.

【讨论】:

    【解决方案2】:

    我找到了一个不错的解决方案。不要使用include("djoser.urls.base"),而是这样做:

    from djoser.views import UserViewSet
    
    # Taken from Djoser's source
    router = DefaultRouter()
    router.register(r"users", UserViewSet, basename="users")
    
    def is_route_selected(url_pattern):
        urls = [
            "usuarios/set_email/",
            "usuarios/reset_email_confirm/",
        ]
    
        for u in urls:
            match = url_pattern.resolve(u)
            if match:
                return False
        return True
    
    # Filter router URLs removing unwanted ones
    selected_user_routes = list(filter(is_route_selected, router.urls))
    
    # Of course, instead of [] you'd have other URLs from your app here:
    urlpatterns = [] + selected_user_routes
    

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 2021-10-05
      • 1970-01-01
      • 2015-09-17
      • 2013-11-01
      • 2022-01-16
      • 2016-09-23
      • 2012-09-02
      • 2019-07-17
      相关资源
      最近更新 更多