我正在尝试安装套装,我输入了以下命令: pip 安装 https://github.com/darklow/django-suit/tarball/v2 并写了这段代码:
from suit.apps import DjangoSuitConfig
class SuitConfig(DjangoSuitConfig) :
layout = 'horizontal'
并添加了它:
INSTALLED_APPS = [
'products.apps.SuitConfig',
.....]
但是当我添加最后一个代码时,我遇到了这个错误:
InvalidTemplateLibrary:指定的模板库无效。尝试加载“suit.templatetags.suit_menu”时引发导入错误:无法从“django.utils.translation”导入名称“ugettext_lazy”(C:\ Users \ hp nvironments nv3 \ lib \ site-packages \ django \ utils ranslation_ 初始化_.py)
注意:django 4.01
此错误属于 Django 版本。如果你想使用 Django 4.* 你需要找到:
from django.utils.translation import ugettext_lazy as _
并更改为:
from django.utils.translation import gettext_lazy as _
快乐编码:)
正想问版本,但注释(django 4.01)有帮助。 “ugettext_lazy”似乎也被您尝试使用的应用程序使用。
“ugettext_lazy”在 django 3+ 中已被弃用,因此您将无法在 django 版本 >= 3 中使用它。 https://code.djangoproject.com/ticket/30165
我在使用 django-hitcount 时也遇到了同样的问题
views.py
from hitcount.views import HitCountDetailView
class PostDetailView(HitCountDetailView):
model = Post
template_name = 'blog/post.html'
slug_field = "slug"
count_hit = True
设置.py
INSTALLED_APPS = [
'hitcount',
.....]
一个答案是 ugettext_lazy 已在 Django 4.0 57 中删除。请改用 gettext_lazy ”“
from django.utils.translation import gettext_lazy as _
我将这行代码放在views.py中,并得到了同样的错误。
如果您使用 django 4.* 版本,则必须在导入语句中将“ugettext_lazy”替换为“gettext_lazy”(如果适用)。
就我而言,即使在进行此更改之后,我仍收到错误“无法导入'ugettext_lazy'”。我必须将“django-rest-passwordreset”从版本 1.1.0 升级到 1.2.1 才能解决该问题。
pip3 安装 django-rest-passwordreset==1.2.1.
检查是否有任何与上述类似但仍使用已弃用版本的依赖库,然后升级它。
我强烈建议将 Django 从 "4.x.x" 降级到 "3.x.x" 以解决您的错误:
pip install django==3.*
因为 Django 4.x.x 非常新,所以有些软件包无法赶上 Django 4.x.x。因此,如果您继续使用 Django 4.x.x,您将在不久的将来遇到相同或类似的错误,那么您将因为 Django 4.x.x而花费大量时间来解决这些错误。
实际上,我在使用 “django-graphql-jwt”、“graphene-django” 等时遇到了相同或类似的错误。然后,对于某些软件包,我可以解决此类错误,但对于某些软件包,我可以解决,但随后发生了新的其他错误,我无法解决这些新的其他错误。
最后,我注意到由于 Django 4.x.x,我花了很多时间来解决此类错误。所以,我再次强烈建议将 Django 从 "4.x.x" 降级到 "3.x.x" 以解决您的错误:
pip install django==3.*
我通过安装 django==3.2 而不是最新版本的 Django 解决了这个问题。 但我仍然会检查 pypi 更新以了解最新版本 Django 中的用法。
我通过将 Django 升级到 4.2.3 修复了这个问题,它运行得很好。
错误:Django ImportError:无法从“django.utils.translation”导入名称“ugettext”
出现此问题的原因是 ugettext 别名在 Django 2.0 中已弃用,并在 Django 3.0 中完全删除。错误消息建议更改 import 语句以直接使用 gettext。
要解决此问题,您可以交换模块以覆盖导入。
在settings.py文件中,添加以下代码:
# settings.py
import django.utils.translation as original_translation
original_translation.ugettext = original_translation.gettext
此解决方法可确保在 Django 应用程序执行开始时将 ugettext 属性替换为 gettext 属性。
您必须像这样安装 django-admin-honeypot 库:
pip 安装 django-admin-honeypot-updated-2021
这样问题就解决了