一、下載下傳源代碼,并安裝源碼到django項目
源代碼官網:https://github.com/sshwsfc/xadmin/tree/django2
1、安裝依賴
将源代碼下載下傳到本地,并進入到源代碼目錄,執行
pip install -r requirements.txt
備注:一般主要是
django-crispy-forms django-formtools httplib2 django-reversion django-import-export future six
依賴包
2、在django的根項目路徑下,建立 extra_app 包,并把源碼包裡面的 xadmin 目錄放進去
## ① settings.py 配置
如果采用源碼放在django下的 extra_apps 檔案内的方式:則需将 extra_apps 檔案加入到項目環境變量中去,并把extra_apps包設定為源碼檔案夾
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_app'))
## ②注冊相關app, 找到INSTALLED_APPS,追加配置如下
INSTALLED_APPS = [
......
'xadmin',
'crispy_forms',
'reversion',
]
## ③設定語言和時間格式
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
DATETIME_FORMAT = 'Y-m-d H:i:s'
DATE_FORMAT = 'Y-m-d'
## ④将 extra_apps 包 安裝到源碼根目錄
在 pycharm 中 extra_apps 上右擊 --> Mark Directory as --> Source Root
## ⑤修改路由映射 url.py
import xadmin
urlpatterns = [
path('xadmin/', xadmin.site.urls),
]
備注:pip直接安裝xadmin插件
pip install django-xadmin
二、問題總結
1、No module named 'MySQLdb’
在項目的 __init__.py 檔案中增加
import pymysql
pymysql.install_as_MySQLdb()
2、子產品包名稱合并修改引發的錯誤
錯誤提示:ModuleNotFoundError: No module named 'django.core.urlresolvers'
原因:django2.1把from django.core.urlresolvers修改成了django.urls
解決:from django.core.urlresolvers import NoReverseMatch, reverse
3、關聯關系ForeignKey引發的錯誤
錯誤類型:TypeError: __init__() missing 1 required positional argument: 'on_delete'
原因:在django2.1 以上版本中,凡是出現關聯關系字段的地方全部加上 on_delete=models.CASCADE
解決方法:on_delete=models.CASCADE
4、參數缺失
錯誤類型:TypeError: __init__() takes 1 positional argument but 6 were given
django2.1.1的 forms表單初始化僅一個參數,
将 forms.Field.__init__(self, required, widget, label, initial, help_text, *args, **kwargs)
修改為 forms.Field.__init__(self)
5、ImportError: cannot import name ‘login’ from 'django.contrib.auth.views’
from django.contrib.auth.views import login
from django.contrib.auth.views import logout
# 修改為
from django.contrib.auth import authenticate, login, logout
6、ImportError: cannot import name ‘QUERY_TERMS’ from 'django.db.models.sql.query’
# django2.1.1版本将xadmin\plugins\filters.py檔案中的
from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS
# 修改為
from django.db.models.sql.query import LOOKUP_SEP, Query
# 在Django2.0版本中把
from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS
# 修改為:
from django.db.models.sql.query import LOOKUP_SEP
from django.db.models.sql.constants import QUERY_TERMS
7、ImportError: cannot import name ‘password_reset_confirm’ from 'django.contrib.auth.views’
# 把xadmin\plugins\password.py中的
from django.contrib.auth.views import password_reset_confirm
修改為:
from django.contrib.auth.views import PasswordResetConfirmView
再把位于75行左右 return後的 password_reset_confirm 修改為 PasswordResetConfirmView
8、AttributeError: ‘Settings’ object has no attribute 'MIDDLEWARE_CLASSES’
# 将xadmin\plugins\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:
9、ModuleNotFoundError: No module named ‘django.contrib.formtools’ 導入fromtools
# 解除安裝舊版本
pip uninstall django-formtools
# 安裝新版本
pip install django-formtools
最後運作:python manage.py makemigrations 建立遷移資料檔案
再運作:python manage.py migrate 遷移資料庫