我对如何修改Djoser的注册端点感到困惑。我想要做的就是向端点添加作用域限制,但我不明白如何覆盖它。文档上的这一页谈到了它:https://djoser.readthedocs.io/en/2.1.0/adjustment.html,但它似乎过时了?现在如何使用UserViewSet来做这件事&确保url按预期工作?
发布于 2021-02-04 15:24:35
你能做的就是继承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,因此通过这种方式,您可以使用自己的自定义类。
https://stackoverflow.com/questions/66036497
复制相似问题