Django GraphQL-JWT项目引入django-graphql-auth后出现ImportError求助
解决Django中ImportError: 无法从'django.utils.encoding'导入'force_text'的问题
错误信息
ImportError: 无法从'django.utils.encoding'导入'force_text'
问题原因
你安装的django-graphql-auth版本与当前使用的Django版本不兼容。Django 3.0及以上版本已移除django.utils.encoding中的force_text函数,替换为force_str,而旧版django-graphql-auth仍在调用这个已废弃的函数。
解决方案
1. 升级django-graphql-auth到兼容版本
执行命令升级到适配高版本Django的最新版:
pip install --upgrade django-graphql-auth
2. 修正代码中的语法错误
你的ExtendUser类存在字符串未闭合的问题,虽不是当前错误的直接原因,但会引发其他异常,需修正:
from django.db import models from django.contrib.auth.models import AbstractUser class ExtendUser(AbstractUser): email = models.EmailField(blank=False, unique=True) EMAIL_FIELD = 'email' # 补充闭合引号 USERNAME_FIELD = 'username' # 补充闭合引号
3. 应急方案(不推荐)
若升级包后仍有问题,可手动修改django-graphql-auth源码的导入逻辑:找到所有使用force_text的文件,将导入语句替换为兼容写法:
try: from django.utils.encoding import force_str as force_text except ImportError: from django.utils.encoding import force_text
内容的提问来源于stack exchange,提问作者Alotab
相关产品推荐
相关产品推荐

