django-rest-framework - Djoser - 覆盖注册
问题描述
我对如何修改 Djoser 的注册端点感到困惑。我想做的就是向端点添加范围限制,但我不明白如何覆盖它。文档上的这个页面讨论了它:https ://djoser.readthedocs.io/en/2.1.0/adjustment.html 但它似乎已经过时了?今天如何使用 UserViewSet 完成并确保 url 按预期工作?
解决方案
您可以做的是继承 djoserUserViewSet
并添加您的额外代码。像这样的东西应该工作
# 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
你不应该包括djoser.urls
在你的urlpatterns
而不是这个(取自他们的文档,您可能有其他网址):
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
的,因此您可以使用自己的自定义类。
推荐阅读
- pyspark - 在 pyspark 中对大量列进行累积求和的优化方法
- r - R中的Kruskal.test
- python - 带有 where 子句的 Pandas read_sql 使用“in”
- javascript - Javascript - 克隆的元素不响应点击
- git - Git:“系统找不到指定的路径。” git lfs 迁移后
- python - Python 仅使用列表推导动态计算没有重复项的列表
- c# - 将 PowerShell 中的加密/解密函数转换为 PHP (openssl_)
- javascript - ScriptManager.RegisterStartupScript 仅在 foreach 循环中被调用一次
- reactjs - 将 div 的引用传递给同一渲染函数中的组件
- python - 检测csv中的转义字符