Django3.0.3使用Xadmin

1、安装xadmin

pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

2、setting.py中增加配置

# 在注册APP的时候 crispy_forms 要放在 xadmin下面否则会报错

INSTALLED_APPS = [
    ...
    'xadmin',
    'crispy_forms',
    'reversion',
    ...
]

3、xadmin有建立自己的数据库模型类,需要进行数据库迁移

python manage.py makemigrations
python manage.py migrate

4、 在总路由中添加xadmin的路由信息

import xadmin
urlpatterns = [
    path(r'xadmin/', xadmin.site.urls),
]

错误解决

# ImportError: cannot import name 'six'

# 解决方法
pip install six

# 然后找到 Lib\site-packages 下的six.py 复制到 django/utils下面

# 问题解决
# ImportError: cannot import name 'python_2_unicode_compatible'

from django.utils.encoding import force_text, python_2_unicode_compatible
# 改为
from django.utils.encoding import force_text
from django.utils.six import python_2_unicode_compatible

# 问题解决
# ImportError: cannot import name 'FieldDoesNotExist'

from django.db.models.fields import FieldDoesNotExist
#改成
from django.core.exceptions import FieldDoesNotExist
# 问题解决
# ImportError: cannot import name 'pretty_name'

from django.forms.forms import pretty_name
# 改为
from django.forms import forms
# 问题解决
# ImportError: cannot import name 'SKIP_ADMIN_LOG' from 'import_export.admin' 

# 找到:xadmin\plugins\importexport.py

# 将from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASS 大概在48行 

# 改为

from import_export.admin import DEFAULT_FORMATS, ImportMixin

# 并且找到下面报错的地方
    def get_skip_admin_log(self):
        if self.skip_admin_log is None:
            return SKIP_ADMIN_LOG
        else:
            return self.skip_admin_log

    def get_tmp_storage_class(self):
        if self.tmp_storage_class is None:
            return TMP_STORAGE_CLASS
        else:
            return self.tmp_storage_class

# 改为

    def get_skip_admin_log(self):
        if self.skip_admin_log is None:
            return ImportMixin.skip_admin_log
        else:
            return self.skip_admin_log

    def get_tmp_storage_class(self):
        if self.tmp_storage_class is None:
            return ImportMixin.tmp_storage_class
        else:
            return self.tmp_storage_class
# ModuleNotFoundError: No module named 'django.contrib.staticfiles.templatetags'

if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
    from django.contrib.staticfiles.templatetags.staticfiles import static
else:
    from django.templatetags.static import static

# 改为

# if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
#     from django.contrib.staticfiles.templatetags.staticfiles import static
# else:
from django.templatetags.static import static

# 问题解决
# TypeError: render() got an unexpected keyword argument 'renderer'

extra_apps目录找到xadmin/views/dashboard.py,大概在36行的位置加个参数 renderer=None
# dashboard.py 
# 36行修改前
def render(self, name, value, attrs=None):

# 修改后
def render(self, name, value, attrs=None, renderer=None):

# 问题解决
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值