python-Django & Djoser 'NoneType' 对象没有属性 'lower' 'NoneType' 对象没有属性 'lower'
每当我尝试修补以更新特定用户信息时,我都会遇到错误。根据 Djoser 文档,端点位于/users/me/
https://djoser.readthedocs.io/en/latest/base_endpoints.html#user
除了这部分,一切都运行良好。我有一个自定义用户模型并覆盖了默认值(再次根据文档) 'current_user': 'accounts.serializers.UserCreateSerializer',
serializer.py
class UserCreateSerializer(UserCreateSerializer):
class Meta(UserCreateSerializer.Meta):
model = User
read_only_fields = ('password'),
fields = ('id', 'email', 'first_name', 'last_name', 'is_active')
models.py
class UserAccountManager(BaseUserManager):
def create_user(self, email, password=None, **extra_fields):
if not email:
raise ValueError('Un email est obligatoire')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save()
return user
def create_superuser(self, email, password):
user = self.create_user(email, password)
user.is_superuser = True
user.is_staff = True
user.save()
return user
class UserAccount(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(max_length=255, unique=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
phone = models.CharField(max_length=50)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
objects = UserAccountManager()
def get_full_name(self):
return self.first_name
def get_short_name(self):
return self.first_name
def __str__(self):
return self.email
我错过了什么?
使用 Traceback 错误进行编辑
环境:
请求方法:补丁请求URL:http://127.0.0.1:8000/api/v1/users/me/
Django版本:4.0 Python版本:3.10.1安装的应用程序:['Django.contrib.admin','Django.contrib.auth','Django.contrib.contenttypes','Django.contrib.sessions','Django.contrib.messages','Django.contrib.staticfiles','rest\u framework','rest\u framework.authtoken','corsheaders','djoser','companies','accounts']安装的中间件:['django.middleware.security.SecurityMiddleware','django.contrib.Session.middleware','corsheaders.middleware.Corsmidleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.AuthenticationMiddleware.AuthenticationMiddleware.AuthenticationMiddleware','django.contrib.MessageMiddleware.MessageMiddleware','django.MiddleD软件“]
回溯(最近一次调用last):文件“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\django\core\handlers\exception。py,”;,第47行,在内部响应中=get\u response(request)File;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\django\core\handlers\base。py,”;,第181行,在\u get\u response response=wrapped\u callback(request,*callback\u args,**callback\u kwargs)文件中;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\django\views\decorators\csrf。py,”;,第54行,在wrapped\u view return view\u func(*args,**kwargs)文件中;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\viewsets。py,”;,第125行,视图返回自我。调度(请求,*参数,**kwargs)文件“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\views。py,”;,第509行,调度响应=自我。handle\u exception(exc)File“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\views。py,”;,第469行,在handle\u exception self中。raise\U uncaught\U exc异常(exc)文件;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\views。py,”;,第480行,在raise\U uncaught\U exception raise exc File“中;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\views。py,”;,第506行,在调度响应中=处理程序(请求,*参数,**kwargs)文件“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\djoser\views。py,”;,第175行,在我返回自我。部分更新(请求、*参数、**kwargs)文件“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\mixins。py,”;,第82行,在partial\u update return self中。更新(请求,*参数,**kwargs)文件“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\mixins。py,”;,更新序列化程序中的第67行。\u是否有效(raise\u exception=True)文件;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\serializers。py,”;,第227行,in is\u valid self_验证数据=自我。运行\u验证(self.initial\u data)文件“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\rest\u framework\serializers。py,”;,第429行,in run\u验证值=self。“验证(值)文件”;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\djoser\serializers。py,”;,第54行,在validate validate\u password(password,user)文件中;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\django\contrib\auth\password\u验证。py,”;,第47行,在validate\u password validator中。验证(密码、用户)文件“;C: \Users\minse\Desktop\Code snippets\Project\FluchtV0.4\env\lib\site packages\django\contrib\auth\password\u验证。py,”;,第145行,在validate if SequenceMatcher(a=password.lower(),b=value\u part)中。lower())。quick\u ratio()>;=自己最大相似度:
异常类型:AttributeError at/api/v1/users/me/Exception值:“NoneType”对象没有属性“lower”