Django3.0.3使用Xadmin


下載地址:

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

注冊應用:

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

# 修改使用中文界面
LANGUAGE_CODE = 'zh-Hans'

# 修改時區
TIME_ZONE = 'Asia/Shanghai'

xadmin有建立自己的數據庫模型類,需要進行數據庫遷移

python manage.py makemigrations
python manage.py migrate

在總路由中添加xadmin的路由信息

import xadmin
xadmin.autodiscover()

# version模塊自動注冊需要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()

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

給xadmin設置基本站點配置信息

import xadmin
from xadmin import views

class BaseSetting(object):
    """xadmin的基本配置"""
    enable_themes = True  # 開啟主題切換功能
    use_bootswatch = True

xadmin.site.register(views.BaseAdminView, BaseSetting)

class GlobalSettings(object):
    """xadmin的全局配置"""
    site_title = ""  # 設置站點標題
    site_footer = ""  # 設置站點的頁腳
    menu_style = "accordion"  # 設置菜單折疊

xadmin.site.register(views.CommAdminView, GlobalSettings)

模型到xadmin中

# 在當前子應用中創建adminx.py,添加如下代碼
# 輪播圖
from .models import BannerInfo
class BannerInfoModelAdmin(object):
    list_display=["title","orders","is_show"]
xadmin.site.register(BannerInfo, BannerInfoModelAdmin)

修改后端xadmin中子應用名稱

# 子應用/apps.py
class HomeConfig(AppConfig):
    name = 'home'
    verbose_name = '我的首頁'

# __init__.py
default_app_config = "home.apps.HomeConfig"

 

錯誤1

# ImportError: cannot import name 'six'

# 解決方法
pip install six

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

# 問題解決

錯誤2

# 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

# 問題解決

錯誤3

# 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

# 問題解決

錯誤4

# TypeError: render() got an unexpected keyword argument 'renderer'

# 跟隨錯誤提示 django\forms\boundfield.py

        return widget.render(
            name=self.html_initial_name if only_initial else self.html_name,
            value=self.value(),
            attrs=attrs,
            renderer=self.form.renderer,
        )

# 改為

        return widget.render(
            name=self.html_initial_name if only_initial else self.html_name,
            value=self.value(),
            attrs=attrs,
            # renderer=self.form.renderer,
        )

# 問題解決

錯誤5

# 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

 

注意:

INSTALLED_APPS = [

    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'xadmin',
    'crispy_forms',
    'corsheaders',
    'rest_framework',

    'home',
]

# 在注冊APP的時候 crispy_forms 要放在 xadmin下面否則會報錯

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM