安装 django-admin-charts 后出现关于 smart_text 的错误

use*_*740 9 django-admin python-3.10 django-4.0

我想在管理面板中添加图表,我安装了该django-admin-charts软件包,上面说将这些添加到settings.py

INSTALLED_APPS = (
         'admin_tools_stats', # this must be BEFORE 'admin_tools' and 'django.contrib.admin'
         'django_nvd3',
)
Run Code Online (Sandbox Code Playgroud)

但是添加之后却出现这样的错误:

ImportError: cannot import name 'smart_text' from 'django.utils.encoding' (E: \ test1 \ venv1 \ lib \ site-packages \ django \ utils \ encoding.py)
Run Code Online (Sandbox Code Playgroud)

我搜索了但没有找到太多关于 smart_text 的信息!也许 Django 版本 4 或 Python 版本 3.10.3 有问题?

小智 26

这是因为 django-admin-charts 需要 smart_text 并且在 django 4 smart_text 中已从 utils/encoding 中删除,因此解决此问题的更好方法是在 settings.py 文件中添加此代码

import django
from django.utils.encoding import smart_str
django.utils.encoding.smart_text = smart_str
Run Code Online (Sandbox Code Playgroud)


小智 2

我查了一下,问题似乎出在 Django 版本上。smart_text文件中不存在函数django/utils/encoding.py。我从 4.0.2 降级到 3.2.13,在 settings.py 中将 PyMemcacheCache 设置为默认缓存,它可以工作。就我而言,降级作为 Django 是不可接受的。3.2.13不支持redis缓存,但它可能对你有帮助。我们希望 django-admin-charts 能够添加对 Django 4.0 的支持。