0


【Django】Django4.1.2使用xadmin避坑指南

换成Django4版本使用xadmin真是需要巨大勇气。

文章目录

环境

win10 python3.9.0 django4.1.2

问题一:ImportError: cannot import name ‘six‘ from ‘django.utils‘

解决办法:
如果正常安装了xadmin库的话,six库也会安装,把

项目根目录/venv/Lib/site-packages/six.py

复制到

项目根目录/venv/Lib/site-packages/django/utils

下即可。

问题二:ImportError: cannot import name ‘ugettext_lazy’ from ‘django.utils.translation’

分析:
Django已经弃用

ugettext(), ugettext_lazy(), ugettext_noop(), ungettext(), 和 ungettext_lazy()

查看issues

解决办法:
既然选择了高版本Django,就尝试在此版本下解决问题。

它已从Django 4中删除,请使用此选项

from django.utils.translation import gettext_lazy as _

问题三:ImportError: cannot import name ‘ugettext’ from ‘django.utils.translation’

解决办法:
和问题二原因一样,改用

from django.utils.translation import gettext_lazy as _, gettext

,后续还会遇到几次类似问题,处理方式相同。

问题四:ImportError: cannot import name ‘python_2_unicode_compatible’ from ‘django.utils.encoding’

解决办法:

# from django.utils.encoding import python_2_unicode_compatible, smart_textfrom django.utils.encoding import smart_text
from six import python_2_unicode_compatible

问题五:ImportError: cannot import name ‘pretty_name’ from ‘django.forms.forms’

解决办法:

# from django.forms.forms import pretty_namefrom django.utils import formats, six

问题六:ImportError: cannot import name ‘force_text’ from ‘django.utils.encoding’

解决办法:

# from django.utils.encoding import force_text, smart_text, smart_strfrom django.utils.encoding import force_str, smart_str
django.utils.encoding.force_text = force_str
django.utils.encoding.smart_text = smart_str

问题七:ImportError: cannot import name ‘ungettext’ from ‘django.utils.translation’

解决办法:

# from django.utils.translation import ungettextfrom django.utils.translation import ngettext

问题八:ModuleNotFoundError: No module named ‘django.contrib.staticfiles.templatetags’

解决办法:

# from django.contrib.staticfiles.templatetags.staticfiles import staticfrom django.templatetags.static import static

参考链接

问题九:ImportError: cannot import name ‘urlquote’ from ‘django.utils.http’

解决办法:

http.py

文件

from urllib.parse import(
    ParseResult,
    SplitResult,
    _coerce_args,
    _splitnetloc,
    _splitparams,
    scheme_chars,
    quote,)
dashboard.py

文件

# from django.utils.http import urlencode, urlquotefrom django.utils.http import urlencode, quote

这个是参考Django2的源码改的,不一定正确,欢迎指正。
好像也有依据。

问题十:ImportError: cannot import name ‘lookup_needs_distinct’ from ‘django.contrib.admin.utils’

依据:

The undocumented django.contrib.admin.utils.lookup_needs_distinct() function is renamed to lookup_spawns_duplicates().

解决办法:

lookup_needs_distinct替换为lookup_spawns_duplicates

问题十一:ImportError: cannot import name ‘FieldDoesNotExist’ from ‘django.db.models.fields’

解决办法:

pip install django-advanced-filters
# from django.db.models.fields import FieldDoesNotExistfrom django.core.exceptions import FieldDoesNotExist

问题十二:ImportError: cannot import name ‘SKIP_ADMIN_LOG’ from ‘import_export.admin’

解决办法:

#from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASSfrom import_export.admin import DEFAULT_FORMATS, ImportMixin, ImportExportMixinBase

#from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASSfrom import_export.admin import DEFAULT_FORMATS, ImportMixin, ImportExportMixinBase

依据

到现在为止,可以正常进行数据库迁移了,已经0:34了,睡觉(¦3[▓▓] 晚安

我本以为搞定了,没想到这个文章还会出Django4.1.2使用xadmin避坑指南(二)

我把改好的xadmin源码上传了一份到GitHub上,希望能够给个star⭐️!

Django4.1.2-xadmin

标签: django python 后端

本文转载自: https://blog.csdn.net/chengyikang20/article/details/127973609
版权归原作者 一个甜甜的大橙子 所有, 如有侵权,请联系我们删除。

“【Django】Django4.1.2使用xadmin避坑指南”的评论:

还没有评论