下載地址:
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), ]
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)
# 在當前子應用中創建adminx.py,添加如下代碼 # 輪播圖 from .models import BannerInfo class BannerInfoModelAdmin(object): list_display=["title","orders","is_show"] xadmin.site.register(BannerInfo, BannerInfoModelAdmin)
# 子應用/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下面否則會報錯