码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Django】Django4.1.2使用xadmin避坑指南


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

    文章目录

      • 环境
      • 问题一:ImportError: cannot import name ‘six‘ from ‘django.utils‘
      • 问题二:ImportError: cannot import name 'ugettext_lazy' from 'django.utils.translation'
      • 问题三:ImportError: cannot import name ‘ugettext’ from ‘django.utils.translation’
      • 问题四:ImportError: cannot import name 'python_2_unicode_compatible' from 'django.utils.encoding'
      • 问题五:ImportError: cannot import name 'pretty_name' from 'django.forms.forms'
      • 问题六:ImportError: cannot import name 'force_text' from 'django.utils.encoding'
      • 问题七:ImportError: cannot import name 'ungettext' from 'django.utils.translation'
      • 问题八:ModuleNotFoundError: No module named 'django.contrib.staticfiles.templatetags'
      • 问题九:ImportError: cannot import name 'urlquote' from 'django.utils.http'
      • 问题十:ImportError: cannot import name 'lookup_needs_distinct' from 'django.contrib.admin.utils'
      • 问题十一:ImportError: cannot import name 'FieldDoesNotExist' from 'django.db.models.fields'
      • 问题十二:ImportError: cannot import name 'SKIP_ADMIN_LOG' from 'import_export.admin'

    环境

    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_text
    from django.utils.encoding import smart_text
    from six import python_2_unicode_compatible
    
    • 1
    • 2
    • 3

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

    解决办法:

    # from django.forms.forms import pretty_name
    from django.utils import formats, six
    
    • 1
    • 2

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

    解决办法:

    # from django.utils.encoding import force_text, smart_text, smart_str
    from django.utils.encoding import force_str, smart_str
    django.utils.encoding.force_text = force_str
    django.utils.encoding.smart_text = smart_str
    
    • 1
    • 2
    • 3
    • 4

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

    解决办法:

    # from django.utils.translation import ungettext
    from django.utils.translation import ngettext
    
    • 1
    • 2

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

    解决办法:

    # from django.contrib.staticfiles.templatetags.staticfiles import static
    from django.templatetags.static import static
    
    • 1
    • 2

    参考链接

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

    解决办法:
    http.py文件

    from urllib.parse import (
        ParseResult,
        SplitResult,
        _coerce_args,
        _splitnetloc,
        _splitparams,
        scheme_chars,
        quote,
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    dashboard.py文件

    # from django.utils.http import urlencode, urlquote
    from django.utils.http import urlencode, quote
    
    • 1
    • 2

    这个是参考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
    
    • 1

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

    解决办法:
    先pip install django-advanced-filters

    # from django.db.models.fields import FieldDoesNotExist
    from django.core.exceptions import FieldDoesNotExist
    
    • 1
    • 2

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

    解决办法:

    #from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASS
    from import_export.admin import DEFAULT_FORMATS, ImportMixin, ImportExportMixinBase
    
    #from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASS
    from import_export.admin import DEFAULT_FORMATS, ImportMixin, ImportExportMixinBase
    
    • 1
    • 2
    • 3
    • 4
    • 5

    依据

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

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

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

    Django4.1.2-xadmin

  • 相关阅读:
    c#中switch常用模式
    Python UI自动化 —— pytest常用运行参数解析、pytest执行顺序解析
    开源:Taurus.DistributedLock 分布式锁框架,支持 .Net 和 .Net Core 双系列版本
    ROC 曲线:健康背景下的应用和解释
    tomcat架构概览
    centos docker jenkins 日志
    自动化测试的爱恨情愁
    PyTorch深度学习实战(13)——可视化神经网络中间层输出
    SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测
    ChatGPT在工业领域的研究与应用探索-产品化部署及应用
  • 原文地址:https://blog.csdn.net/chengyikang20/article/details/127973609
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号