首页 > 其他分享 >django安装xadmin及问题解决

django安装xadmin及问题解决

时间:2024-04-01 11:36:41浏览次数:27  
标签:xadmin name self django 报错 import 安装

django安装xadmin及问题解决

环境:

Windows 10 专业版
pycharm pro 2020.3
django 3.2.1
xadmin 选django2的版本

一,安装

这里我选择从 GitHub 安装:

pip install git+https://github.com/sshwsfc/xadmin.git

结果如下:

Successfully installed 
defusedxml-0.7.1 
diff-match-patch-20200713 
django-crispy-forms-1.11.2 
django-formtools-2.3 
django-import-export-2.5.0 
django-reversion-3.0.9 
et-xmlfile-1.1.0 future-0.18.2 
httplib2-0.9.2 
markuppy-1.14 
odfpy-1.4.1 
openpyxl-3.0.7 
pyyaml-5.4.1 
six-1.16.0 
tablib-3.0.0 
xadmin-0.6.1 xlrd-2.0.1
xlwt-1.3.0

二,注册 xadmin:

'xadmin',
'crispy_forms',
'reversion',

crispy_forms与reversion是xadmin的依赖包,使用上面的命令会自动安装。

三,配置 URL:

其余代码

from xadmin.plugins import xversion
 
import xadmin
xversion.register_models()
xadmin.autodiscover()
 
urlpatterns = [
    其余代码
    path('xadmin/', xadmin.site.urls),
]

四,数据迁移并创建超级用户

五,收集media

python manage.py collectstatic

六,运行项目,解决错误

运行项目,出现下面的报错:

1,ImportError: cannot import name ‘six’ from ‘django.utils’

在 site-packages 目录中找到 six.py 文件,将它复制到 django/utils 目录下。

运行项目,出现下面的报错。

2,No module named ‘django.core.urlresolvers’

有博客说是:

因为Django 3.x 已经把django.core.urlresolvers模块的内容迁移至django.urls中

将:

from django.core.urlresolvers import reverse

改为:
from django.urls import reverse
这个错误多次出现,直接按上面的方法处理。

运行项目,出现下面的报错。

3,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

运行项目,出现下面的报错。

4,ImportError: cannot import name ‘pretty_name’ from ‘django.forms.forms’

将:

from django.forms.forms import pretty_name

改为:

from django.utils import formats, six

运行项目,出现下面的报错。

5,ModuleNotFoundError: No module named ‘django.contrib.staticfiles.templatetags’

将:

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

改为:

from django.templatetags.static import static

运行项目,出现下面的报错。

6,TypeError: init() missing 1 required positional argument: ‘on_delete’

这个错误多次出现,直接在字段中添加:

on_delete=models.CASCADE

运行项目,出现下面的报错。

7,TypeError: init() takes 1 positional argument but 6 were given

将:

forms.Field.__init__(self, required, widget, label, initial, help_text, 
*args, **kwargs)

改为:

forms.Field.__init__(self)

运行项目,出现下面的报错。

8,ImportError: cannot import name ‘login’ from ‘django.contrib.auth.views’

将:

from django.contrib.auth.views import login

改为:

from django.contrib.auth.views import LoginView as login

将:

from django.contrib.auth.views import logout

改为:

from django.contrib.auth.views import LogoutView as logout

随之而来的同文件下的改动:

注释掉

class LoginView(BaseAdminView) 与 class LogoutView(BaseAdminView) 的 get 方法中 defaults 字典的 'current_app': self.admin_site.name,

修改

class LoginView(BaseAdminView) 与 class LogoutView(BaseAdminView) 的 get 方法中 return 为 return login.as_view(**defaults)(request) 与 return logout.as_view(**defaults)(request)

运行项目,出现下面的报错。

9,ImportError: cannot import name ‘FieldDoesNotExist’ from ‘django.db.models.fields’

先安装 django-advanced-filters,
再将:

from django.db.models.fields import FieldDoesNotExist

改为:

from django.core.exceptions import FieldDoesNotExist

运行项目,出现下面的报错。

10,ImportError: cannot import name ‘QUERY_TERMS’ from ‘django.db.models.sql.query’

将:

from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS

改为:

from django.db.models.sql.query import LOOKUP_SEP, Query

同文件下,将:

if len(parts) > 1 and parts[-1] in QUERY_TERMS:

改为:

if len(parts) > 1 and parts[-1] in Query:

运行项目,出现下面的报错。

11,ModuleNotFoundError: No module named ‘requests’

安装requests

运行项目,出现下面的报错。

12,ImportError: cannot import name ‘FieldDoesNotExist’ from ‘django.db.models’

将:

from django.db.models import FieldDoesNotExist, Avg, Max, Min, Count, Sum

改为:

from django.core.exceptions import FieldDoesNotExist
from django.db.models import Avg, Max, Min, Count, Sum

运行项目,出现下面的报错。

13,ImportError: cannot import name ‘password_reset_confirm’ from ‘django.contrib.auth.views’

将:

from django.contrib.auth.views import password_reset_confirm

改为:

from django.contrib.auth.views import PasswordResetConfirmView

运行项目,出现下面的报错。

14,AttributeError: ‘Settings’ object has no attribute ‘MIDDLEWARE_CLASSES’

在 language.py 中修改:
将:

if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE_CLASSES:

改为:

if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE:

运行项目,出现下面的报错。

15,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

七,访问xadmin

创建超级用户后,运行项目,访问http://127.0.0.1:8000/xadmin/,

16,AttributeError: ‘Media’ object has no attribute ‘add_css’

将:

def vendor(*tags):

改为:

def vendor(*tags):
    media = Media()
    css = {'screen':[]}
    js = []
    for tag in tags:
        file_type = tag.split('.')[-1]
        files = xstatic(tag)
        if file_type == 'js':
            # media.add_js(files)
            js.extend(files)
        elif file_type == 'css':
            # media.add_css({'screen': files})
            css['screen'] += files
    # return media
    return Media(css=css, js=js)

运行项目,出现下面的报错。

17,ImportError: cannot import name ‘javascript_catalog’ from ‘django.views.i18n’

将:

    def i18n_javascript(self, request):
        if settings.USE_I18N:
            from django.views.i18n import javascript_catalog
        else:
            from django.views.i18n import null_javascript_catalog as javascript_catalog
        return javascript_catalog(request, packages=['django.conf', 'xadmin'])

改为:

    def i18n_javascript(self, request):
        # if settings.USE_I18N:
        #     from django.views.i18n import javascript_catalog
        # else:
        #     from django.views.i18n import null_javascript_catalog as javascript_catalog
        from django.views.i18n import JavaScriptCatalog
        # return javascript_catalog(request, packages=['django.conf', 'xadmin'])
        return JavaScriptCatalog.as_view(packages=['django.conf', 'xadmin'])(request)

访问http://127.0.0.1:8000/xadmin/。

点击左侧 Revisions 出现下面的报错。

18,AttributeError: ‘DateTimeField’ object has no attribute ‘rel’
将:

if isinstance(field.rel, models.ManyToOneRel):

改为:

if isinstance(field.remote_field, models.ManyToOneRel):

这个错误会在第一次点击左边的所有导航内容时出现,只需将 rel 改为 remote_field 就行。

点击主页的“添加小组件”按钮时,出现下面报错。

19,TypeError: render() got an unexpected keyword argument ‘renderer’

将 xadmin\views\dashboard.py WidgetTypeSelect类中:

def render(self, name, value, attrs=None):

改为:

def render(self, name, value, attrs=None, renderer=None):

或者

将/lib/site-packages/django/forms/boundfield.py中as_widget的return的最后一个参数注释掉。

OK! 暂时到这里吧,后面遇到问题再在下面补充。

之所以在 django3.2.1 中使用 xadmin 会出现这么多报错,是因为 xadmin 针对 django 进行开发的版本最多到 djang 2,后面 xadmin 成为一个完全的前端框架,对 django 的专门支持不如以前了。

八,问题补充

20,‘ManyToOneRel’ object has no attribute ‘to’

将:

self.add_url, (_('Create New %s') % self.rel.to._meta.verbose_name), name,

改为:

self.add_url, (_('Create New %s') % self.rel), name,

21,‘Media’ object has no attribute ‘add_js’

将xadmin/util.py的:

def vendor(*tags):
    media = Media()
    for tag in tags:
        file_type = tag.split('.')[-1]
        files = xstatic(tag)
        if file_type == 'js':
            media.add_js(files)
        elif file_type == 'css':
            media.add_css({'screen': files})
    return media

改为:

def vendor(*tags):
    css = {'screen': []}
    js = []
    for tag in tags:
        file_type = tag.split('.')[-1]
        files = xstatic(tag)
        if file_type == 'js':
            js.extend(files)
        elif file_type == 'css':
            css['screen'] += files
    return Media(css=css, js=js)

22,AttributeError: module ‘django.db.models’ has no attribute ‘FieldDoesNotExist’

报错文件:venv/lib/python3.8/site-packages/xadmin/views/list.py:

我暂时无法解决!!

23,AttributeError: ‘ForeignKey’ object has no attribute ‘rel’

参考问题 18。

24,AttributeError: ‘CharField’ object has no attribute ‘rel’

参考问题 18。

25,AttributeError: ‘ManyToManyField’ object has no attribute ‘rel’

参考问题 18。

将 xadmin\util.py的:

return (hasattr(field, 'rel') and field.rel != None) or is_related_field(field)

修改为:

return (hasattr(field, 'remote_field') and field.remote_field != None) or is_related_field(field)

27,AttributeError: ‘set’ object has no attribute ‘get_field_names’

28,TypeError: get_deleted_objects() takes 3 positional arguments but 5 were given

将:

deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
            queryset, self.opts, self.user, self.admin_site, using)

改成:

deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
            queryset, self.user, self.admin_site)

29,AttributeError at /xadmin/xadmin/userwidget/4/delete/ type object ‘xadminuserwidgetAdmin’ has no attribute ‘has_delete_permission’

这个问题在我删除已存在的”用户小组件“时出现。

直接注释掉报错处:

# if not admin_site._registry[model].has_delete_permission(request, obj):
# perms_needed.add(opts.verbose_name)

30,IndexError: list index out of range

将:

input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).replace('/><input', '/>\n<input').split('\n') if ht != '']

改为:

input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != '']
input_html[0] = input_html[0] + "/>"
input_html[1] = "<" + input_html[1]

参考:

  • Django3.1.7使用Xadmin(只为记录坑)
  • Django 3.x 版本使用xadmin问题汇总
  • Django 由 admin 转 xadmin 填坑
  • Django2集成xadmin详解-4-list index out of range报错追踪和处理

建议还是别用django-xadmin了,Simple UI、grappelli 它们不更香吗?

到此这篇关于django安装xadmin及问题解决的文章就介绍到这了,更多相关django安装xadmin 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:xadmin,name,self,django,报错,import,安装
From: https://www.cnblogs.com/HeroZhang/p/18108035

相关文章

  • Django xadmin安装及使用详解
    Djangoxadmin安装及使用详解一.简介xadmin是一个开源项目。针对于djangoadmin,页面美化程度,功能不完善等问题,额外开发的一个模块。目前xadmin的最新版本已经是xadmin3.0,但是xadmin3.0已经变成了一个纯前端项目,有兴趣的同学可以自己研究下。目前作者已经不对x......
  • Visual Studio 2022的安装 - 编程手把手系列文章
          工欲善其事,必先利其器。      今天讲的是编程开发工具VisualStudio2022的安装。作为手把手系列的开始,需要先对进行编程所使用的工具进行了解。此博文从下面几个步骤入手,对VS2022这个开发工具IDE进行安装等介绍,让读者们能够从入门开始进行学习。 1......
  • 如何查看已安装的python路径?
    在Windows、Linux或Mac中,Python都是非常流行的编程语言。查看已安装的Python路径是学习Python开发的基础之一。下面我们就来分享一下如何查看已安装的Python路径?如何查看已安装的python路径?1.在Windows中首先,打开Windows命令提示符。在开始菜单中输入“cmd”并打开它。然后输入......
  • 使用docker安装ES
    1、创建网络,让es和kibana容器可以通信互联dockernetworkcreatees-net2、拉取镜像dockerpullelasticsearch:7.12.1dockerpullkibana:7.12.1这两个版本要一致3、创建目录mkdir-p/home/data/escd /home/data/esmkdir es-datamkdir es-logsmkdir es-plugins4......
  • PhpStorm安装和破解
    PhpStorm安装和破解安装包获取方式:(关注公众号:爬虫探索者)发送phpstorm获取。解压安装包具体安装方法可以参考操作方法类似,如果有需要的软件,可以评论软件名称,我可以分享一下。pycharm安装和破解......
  • Oracle 低代码平台 Apex 最新版本 23.2 安装过程
    趁春节快结束前,安装了一把APEX,到目前为此,APEX最新版本为23.2,23.2和21版本有一些变化,只是用于验证,我是使用的单独模式,没有安装TOMAT,下面列一下安装过程:1.环境  ORACLELINUX9.3  GI19.22  ORACLE19.22  CDB  APEX23.22.使用PDB用于APEX  ......
  • 虚拟机环境的搭建及Red Hot系统安装
     VMware虚拟机的安装准备好VMware安装包并下载虚拟机设置注:位置需自定义一个目录并保证所在磁盘空间足够大RedHat系统安装选择提前下载好的rhel系统镜像调出鼠标快捷键:ctrl+alt小键盘上下键移动光标按enter回车键取消启用kdump设置root账户......
  • 在vmware16.2.5上安装虚拟机centos7.9镜像文件
    1:首先,下载vmware 进入到VMware的官网,这里小元子要和大家提前说一下哦,大家可以提前看一下自己的windous的版本,选择适合自己windous版本的vmware进行下载,避免下载以后由于版本问题不兼容。由于小元子是windous11,所以我选择下载vmware16.2.5,(温馨提示:版本兼容问题很重要,windous1......
  • hadoop3.0高可用分布式集群安装
    hadoop高可用,依赖于zookeeper。用于生产环境,企业部署必须的模式. 1.部署环境规划1.1.虚拟机及hadoop角色划分主机名称namenodedatanoderesourcemanagernodemanagerzkfcjournalnodezookeepermasterslave1slave21.2.软件......
  • 学习日记之《Django3 Web应用开发实战》
    学习日记之《Django3Web应用开发实战》第二章——Django配置信息1、静态资源和媒体资源2、模板配置3、数据库配置4、中间件介绍第三章——初探路由1、反向解析2、重定向第四章——探究FBV视图1、异常响应2、文件下载功能3、文件上传功能自定......