Django4.0中无法使用django-rest-auth:ugettext_lazy导入错误求助
Django4.0与django-rest-auth兼容性问题解答
django-rest-auth==0.9.5无法直接兼容Django4.0,原因是该库代码中使用了Django4.0已移除的ugettext_lazy(Django4.0统一改用gettext_lazy),且django-rest-auth官方早已停止维护(最后版本更新停留在2019年),不会推出适配Django4.0的修复版本。
解决办法
推荐方案:迁移到dj-rest-auth
dj-rest-auth是django-rest-auth的官方维护分支,完全适配Django4.0+、最新版DRF以及django-allauth,API设计与原库几乎一致,迁移成本极低:- 卸载旧库:
pip uninstall django-rest-auth - 安装新库:
pip install dj-rest-auth - 修改
INSTALLED_APPS,将'rest_auth'替换为'dj_rest_auth' - 调整URL配置(若有):将原
path('rest-auth/', include('rest_auth.urls'))改为path('rest-auth/', include('dj_rest_auth.urls'))
- 卸载旧库:
临时应急修复(不推荐)
若暂时无法迁移,可在项目settings.py的最顶部添加以下代码,临时兼容ugettext_lazy的导入:from django.utils.translation import gettext_lazy as ugettext_lazy注意:此方法仅能解决当前导入错误,后续可能出现更多Django4.0不兼容的API问题,不建议长期使用。
另外,需确保依赖的django-allauth版本兼容Django4.0,建议安装最新稳定版。
内容的提问来源于stack exchange,提问作者Masaki93
相关产品推荐
相关产品推荐

