导入错误:无法从“django.utils.translation”导入名称“ugettext_lazy”

问题描述 投票:0回答:4

我导入了

from rest_auth.views import LoginView
并且我正在尝试实现登录 API。我从不直接导入
ugettext_lazy

from rest_auth.views import LoginView
from django.contrib.auth import authenticate, login, logout
from .serializers import LoginUserSerializer

class Login(LoginView):
    def post(self, request, *args, **kwargs):
        serializer = LoginUserSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        login(request, user)
        return super().post(request, format=None)

但是我收到以下错误:

File "filePath\ProjectName\app1\urls.py", line 4, in <module> from .login
import Login 
File "filePath\ProjectName\app1\login.py", line 1, in <module> from
rest_auth.views import LoginView  
File "\myenv\lib\site-packages\rest_auth\views.py", line 9, in <module>
from django.utils.translation import ugettext_lazy as _ ImportError:
cannot import name 'ugettext_lazy' from 'django.utils.translation' (\myenv\lib\site-packages\django\utils\translation\__init__.py)

我阅读了其他答案,大多数答案都建议从 Django 版本 4 降级到 3。

还有其他方法可以解决此问题或有其他建议来实现登录 API 吗?

编辑:我使用

simple jwt
来实现基于令牌的身份验证。

python python-3.x django importerror django-rest-auth
4个回答
1
投票

pip
默认安装
django 4
,而
django-user-session
似乎与没有
Django 4.0
ugettext_lazy

不兼容

您可以通过将

django
的版本降级至 3.2 直到正确支持 4.0 来解决该问题。

pip install django==3.2 

这是该问题的临时解决方法。


0
投票

ugettext_lazy 已在 Django 4 中删除。我使用 gettext_lazy 代替: 从 django.utils.translation 导入 gettext_lazy as _


0
投票

安装 this,然后从

dj_rest_auth

导入

-1
投票

升级 django-rest-auth 将解决该错误:

pip install django-rest-auth --upgrade
© www.soinside.com 2019 - 2024. All rights reserved.