Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何阻止/覆盖djoser用户/me端点?_Python_Django_Djoser - Fatal编程技术网

Python 如何阻止/覆盖djoser用户/me端点?

Python 如何阻止/覆盖djoser用户/me端点?,python,django,djoser,Python,Django,Djoser,我想知道是否有机会阻止djoser的user/me端点以获取特定的请求方法。我在文件中没有看到这一点 问题:现在我有两个用户{email:'a@exa.com“}和{电子邮件:'b@exa.com“}。我可以使用第一个用户更改他的电子邮件以匹配第二个用户的电子邮件,这样两个用户都会有相同的电子邮件,而第二个用户将因此被阻止 是否有一种优雅的方法来检查电子邮件是否存在于djoser级别?djoser维护人员 我想知道是否有机会为特定的请求方法阻止djoser的user/me端点。我在文件中没有看到

我想知道是否有机会阻止djoser的
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)