Python 如何阻止/覆盖djoser用户/me端点?
我想知道是否有机会阻止djoser的Python 如何阻止/覆盖djoser用户/me端点?,python,django,djoser,Python,Django,Djoser,我想知道是否有机会阻止djoser的user/me端点以获取特定的请求方法。我在文件中没有看到这一点 问题:现在我有两个用户{email:'a@exa.com“}和{电子邮件:'b@exa.com“}。我可以使用第一个用户更改他的电子邮件以匹配第二个用户的电子邮件,这样两个用户都会有相同的电子邮件,而第二个用户将因此被阻止 是否有一种优雅的方法来检查电子邮件是否存在于djoser级别?djoser维护人员 我想知道是否有机会为特定的请求方法阻止djoser的user/me端点。我在文件中没有看到
user/me
端点以获取特定的请求方法。我在文件中没有看到这一点
问题:现在我有两个用户{email:'a@exa.com“}和{电子邮件:'b@exa.com“}
。我可以使用第一个用户更改他的电子邮件以匹配第二个用户的电子邮件,这样两个用户都会有相同的电子邮件,而第二个用户将因此被阻止
是否有一种优雅的方法来检查电子邮件是否存在于djoser级别?djoser维护人员 我想知道是否有机会为特定的请求方法阻止djoser的user/me端点。我在文件中没有看到这一点 您需要将
UserViewSet
子类化,并更改me
操作或在get\u permissions
中添加自定义权限
因此,如果您想禁用/限制PUT
class MyCustomUserViewSet(UserViewSet):
def get_permissions(self):
if self.action == "me" and self.request.method == "PUT":
# do something
return super().get_permissions()
或
问题:现在当我有两个用户{email:'a@exa.com“}和{电子邮件:'b@exa.com' }. 我可以使用第一个用户更改他的电子邮件以匹配第二个用户的电子邮件,这样两个用户都会有相同的电子邮件,而第二个用户将因此被阻止
您应该始终对用户电子邮件具有unique
或pk
约束。djoser不负责保证数据库中的电子邮件是唯一的
是否有一种优雅的方式来检查电子邮件是否存在于djoser级别
如果您使用
unique
,那么它将不会是2xx,您将知道出了什么问题。没有办法“检查”来自djoser级别的电子邮件是否存在,也永远不会有,因为它的目的是成为Django的通用REST身份验证。至于我,你应该将其发送给djoser的作者。
class MyCustomUserViewSet(UserViewSet):
@action(["get", "patch", "delete"], detail=False)
def me(self, request, *args, **kwargs):
return super().me(request, *args, **kwargs)