0

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

4

2 回答 2

2

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

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

于 2018-11-07T07:10:38.253 回答
0

我找到了一个不错的解决方案。而不是使用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
于 2021-11-18T21:04:50.093 回答