Django2.0只支持Oracle 12.1,要連接11g,只能降級到Django 1.11.20
所以只能使用django1.11.20版本
1. 修改pycharm默認的django版本
使用命令行卸載和安裝:
# 卸載
pip uninstall django
# 安裝,這裏使用了國內的pip源
pip install django==1.11.20 -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 安裝oracle和mysql數據庫插件包
# oracle
pip install cx-oracle -i https://pypi.tuna.tsinghua.edu.cn/simple
# mysql
pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple
這裏安裝時,可能會報出這個錯誤:
MySQLdb/_mysql.c(29): fatal error C1083: 無法打開包括文件: “mysql.h”: No such file or directory
這種情況就要下載離線包,再進行安裝了:
我這裏下載到了桌面,然後使用pip安裝
3. 下載django-xadmin
下載地址爲:https://github.com/sshwsfc/xadmin/
我這裏使用pip安裝不成功,也就只能下載源碼,進行安裝了:
將壓縮包中的所需內容拷貝到項目裏:
這時候的項目目錄如下圖:
使用django-xadmin,還需要安裝一些依賴,而這些依賴都在requirements配置好了,我們對其進行安裝:
pip install -r requirements.txt
4. 爲了區分本地app和他人app,我們創建下面兩個文件夾:
注意:選中上述文件夾後,要Sources Root一下
然後將,xadmin放入到extra_apps中:
5. 在setting.py文件中添加內容,讓django能夠找到我們的app
# app識別配置
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) # 將apps目錄設置成python可識別目錄
sys.path.insert(1, os.path.join(BASE_DIR, 'extra_apps')) # 將xadmin所在目錄設置成python可識別目錄
# app配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'xadmin',
'crispy_forms',
'reversion',
]
6. 修改字符集編碼,讓xadmin顯示中文:
LANGUAGE_CODE = 'zh-hans' # 更改(xadmin中文)
TIME_ZONE = 'Asia/Shanghai' # 更改
USE_I18N = True
USE_L10N = True
USE_TZ = False
7. 修改數據庫配置
數據庫直接配置在setting文件裏不太合適,遂將其提取出來放到config配置文件中,並修改setting.py文件內容
# 讀取配置文件
config_init = configparser.ConfigParser()
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
config_init.read(os.path.join(path, 'config/config.ini'), encoding='utf-8-sig')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': config_init.get("Mysql", "host"),
'PORT': config_init.get("Mysql", "port"),
'NAME': config_init.get("Mysql", "name"),
'USER': config_init.get("Mysql", "user"),
'PASSWORD': config_init.get("Mysql", "password"),
},
'db_oracle': {
'ENGINE': 'django.db.backends.oracle',
'HOST': config_init.get("Oracle", "host"),
'PORT': config_init.get("Oracle", "port"),
'NAME': config_init.get("Oracle", "name"),
'USER': config_init.get("Oracle", "user"),
'PASSWORD': config_init.get("Oracle", "password"),
},
}
如圖:
8. 嘗試啓動django項目:
程序報錯,報出缺少formtools、request依賴
安裝上述依賴:
pip install django-formtools==2.1.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
安裝完成後,再次啓動django項目,錯誤改變,但是變成了path無法識別的錯誤
這是因爲django降級導致的,修改urls.py文件,並添加xadmin路徑配置
from django.conf.urls import include, url
from django.conf.urls import url
import xadmin
xadmin.autodiscover()
# version模塊自動註冊需要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()
from django.contrib import admin
xadmin.autodiscover()
urlpatterns = [
# path('admin/', admin.site.urls),
# url(r'^admin/', include(admin.site.urls)),
url(r'^xadmin/', include(xadmin.site.urls))
]
9. 同步數據表到數據庫,我這裏的default使用的mysql數據庫
setting文件裏的數據庫配置中,default使用那個庫,相關admin、xadmin、auth等就會創建在哪個數據庫中
數據庫表創建(更新)命令:python manage.py makemigrations
數據庫表應用命令:python manage.py migrate
10 .創建超級用戶,訪問站點
使用下面的語句創建超級用戶,並訪問站點:
python manage.py createsuperuser
打開瀏覽器,訪問127.0.0.1:8000
至此,django+xadmin+mysql的相關配置已經完成
後面將添加oracle數據庫、rules、django日誌等
上述django程序的環境依賴如下圖:
#requirements.txt
backports.csv==1.0.7
certifi==2019.6.16
chardet==3.0.4
cx-Oracle==7.2.2
defusedxml==0.6.0
diff-match-patch==20181111
Django==1.11.20
django-crispy-forms==1.7.2
django-formtools==2.1
django-import-export==1.2.0
django-reversion==3.0.4
et-xmlfile==1.0.1
future==0.15.2
futures==3.1.1
httplib2==0.9.2
idna==2.8
jdcal==1.4.1
mysqlclient==1.4.4
odfpy==1.4.0
openpyxl==2.6.3
pytz==2019.2
PyYAML==5.1.2
requests==2.22.0
six==1.10.0
sqlparse==0.3.0
tablib==0.13.0
urllib3==1.25.3
xlrd==1.2.0
xlwt==1.3.0