Djoser - 覆盖注册
Djoser - Override registration
我对如何修改 Djoser 的注册端点感到困惑。我想做的就是向端点添加范围限制,但我不明白如何覆盖它。
文档上的这个页面讨论了它:https://djoser.readthedocs.io/en/2.1.0/adjustment.html
但它似乎过时了?
今天如何使用 UserViewSet 完成并确保 url 按预期工作?
您可以做的是 subclass djoser UserViewSet
并添加您的额外代码。这样的东西应该可以工作
# your_views.py
from djoser.views import UserViewSet as DjoserUserViewSet
class UserViewSet(DjoserUserViewSet):
def get_throttles(self):
if self.action == "create":
self.throttle_classes = [YourThrottleClass]
return super().get_throttles()
然后在您的 urls.py
中,您不应在 urlpatterns
中包含 djoser.urls
而不是这个(取自他们的文档,你可能有其他 url):
urlpatterns = [
(...),
url(r'^auth/', include('djoser.urls')),
]
在您的 urlpatterns
中执行此操作(您可能已经定义了路由器):
# I have use endpoint "auth/users" to keep it similar to the above, but it can be just simple "users"
router = DefaultRouter()
router.register("auth/users", your_views.UserViewSet)
urlpatterns = [
(...),
url(r'^', include(router.urls)),
]
在幕后 djoser.urls
正在注册 users
端点但使用其内部 UserViewSet
因此您可以使用自己的自定义 class.
我对如何修改 Djoser 的注册端点感到困惑。我想做的就是向端点添加范围限制,但我不明白如何覆盖它。 文档上的这个页面讨论了它:https://djoser.readthedocs.io/en/2.1.0/adjustment.html 但它似乎过时了? 今天如何使用 UserViewSet 完成并确保 url 按预期工作?
您可以做的是 subclass djoser UserViewSet
并添加您的额外代码。这样的东西应该可以工作
# your_views.py
from djoser.views import UserViewSet as DjoserUserViewSet
class UserViewSet(DjoserUserViewSet):
def get_throttles(self):
if self.action == "create":
self.throttle_classes = [YourThrottleClass]
return super().get_throttles()
然后在您的 urls.py
中,您不应在 urlpatterns
djoser.urls
而不是这个(取自他们的文档,你可能有其他 url):
urlpatterns = [
(...),
url(r'^auth/', include('djoser.urls')),
]
在您的 urlpatterns
中执行此操作(您可能已经定义了路由器):
# I have use endpoint "auth/users" to keep it similar to the above, but it can be just simple "users"
router = DefaultRouter()
router.register("auth/users", your_views.UserViewSet)
urlpatterns = [
(...),
url(r'^', include(router.urls)),
]
在幕后 djoser.urls
正在注册 users
端点但使用其内部 UserViewSet
因此您可以使用自己的自定义 class.