windows搭建Django專案,以及資料庫遷移
首先,windows、Django、mysql和vscode是本文用到的工具
1、安裝python環境和mysql資料庫
(a) 安裝mysql資料庫,需要注意的是把db移到別的盤,在另一篇有講,詳細教程也有貼,自行檢視。
(b) python環境的話,我比較傾向於用anaconda3去裝python3.5,喜歡用最新的版本的python。官網可下載。anaconda package 可手動下載需要的包。或者conda或pip
2、推薦vscode程式碼編輯環境
3、新建Django專案
(1)新建一個資料夾,cd到該檔案下,建立專案:(首先django的庫別忘pip下來)
django-admin startproject oa #新建gjango專案,並用vscode開啟。操作如下
code . 注意後面有個點。這是將vscode的路徑加到path裡,所以可以從這裡直接開啟,點表示將現在路徑作為專案工作空間。生成的檔案目錄如下:
settings.py是配置專案的路徑、資料庫等,預設是sqlite,我採用mysql資料庫儲存資料。url.py是路由路徑。manage.py是一個工具。可以通過manage.py拉起整個專案。到現在為止,你可以在控制檯通過如下命令拉起專案:
python manage.py runserver 0.0.0.0:8000 #在此之前,可以通過python manage.py help檢視可用命令
E:\bin\Anaconda3\python.exe manage.py runserver 0.0.0.0:8000 #我這裡用的是這樣的方式,指定python去呼叫。因為版本比較多
在瀏覽器試試http://127.0.0.1:8000/admin/,訪問一下django提供的後臺管理,滿強大的。
(2)發現admin需要使用者名稱和密碼。這樣的話,就先要去settings.py檔案配置mysql資料庫,同時需要在settings.py同目錄下的__init__.py檔案裡新增以下兩行(別忘下載pymysql包):
import pymysql
pymysql.install_as_MySQLdb()
然後修改settings.py檔案下資料庫配置,如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_oa',
'USER': 'root',
'PASSWORD': '*****',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
ALLOWED_HOSTS = ['*'] # *設定url,在瀏覽器上訪問的。可設定主機ip,然後用http://*:8000/admin去訪問
然後用以下命令在控制檯建立超級使用者,郵箱可不寫:
python manage.py createsuperuser #建立超級使用者
如果報右邊的錯誤,
按照如下命令再執行一遍:
python manage.py migrate
python manage.py createsuperuser #先執行上面的,再執行這個就ok了
這是因為在建立超級使用者之前要做一個數據庫遷移。
(3)接下來,是建立自己的app了。 用以下命令建立好之後,需要在settings.py裡註冊app(如下)。
python manage.py startapp app #app是自己應用的名字
接下來,比如你在自己的mysql裡已經建好表了,那麼就可以採用資料遷移的方式,直接與django裡的models繫結:
保證django專案已經執行(runserver)起來(很重要!!!)
python manage.py inspectdb #這個命令可以檢視現有的模型檔案(models.py)!!!!!!!!!!!!
E:\codewyan\oa>python manage.py makemigrations #採用這兩條命令,出現如下提示,則成功
<class 'demo.models.OaChannelTable'>
Migrations for 'demo':
demo\migrations\0001_initial.py
- Create model OaChannelTable
- Create model OaPropTable
E:\codewyan\oa>python manage.py migrate
<class 'demo.models.OaChannelTable'>
Operations to perform:
Apply all migrations: admin, auth, contenttypes, demo, sessions
Running migrations:
Applying demo.0001_initial... OK
接下來,就可以在自己的views.py裡訪問models裡的類(models會將資料表對映為類,然後採用類名.objects.all()[:10]訪問資料庫,得到一個查詢的queryset)。
坑還有很多,筆者在後面的學習中會不斷積累並記錄的。