本節(jié)主要是為了讓您了解一些django最基本的命令,請嘗試著記住它們,并且多多練習(xí)下,特別是標(biāo)記為紅色的那些打開 Linux 或 MacOS 的 Terminal (終端)直接在 終端中輸入這些命令(不是 python 的 shell中) 更多見:iii.run
如果是 windows 用 cmd(開始 搜索 cmd 或者 快捷鍵 win + R,輸入 cmd) 直接在 cmd 上操作。
新建一個 django project
django-admin startproject blog
特別是在 windows 上,如果報錯,嘗試用 django-admin 代替 django-admin.py 試試
注意 project_name 是自己的項目名稱,需要為合法的 Python 包名,如不能為 1a 或 a-b。
新建 app
要先進入項目目錄下,cd project_name 然后執(zhí)行下面的命令(下同,已經(jīng)在項目目錄下則不需要 cd project_name)
python manage.py startapp my_blog
或
django-admin startapp my_blog
效果太概是這個樣子的
.
├── my_blog
│ ├── admin.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── blog
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-34.pyc
│ │ └── settings.cpython-34.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
一般一個項目有多個app, 當(dāng)然通用的app也可以在多個項目中使用。
與項目名類似 app name 也需要為合法的 Python 包名,如 blog,news, aboutus 等都是合法的 app 名稱。
同步更改數(shù)據(jù)庫表或字段
Django 1.7.1及以上 用以下命令
# 1. 創(chuàng)建更改的文件
python manage.py makemigrations
# 2. 將生成的py文件應(yīng)用到數(shù)據(jù)庫
python manage.py migrate
這種方法可以在SQL等數(shù)據(jù)庫中創(chuàng)建與models.py代碼對應(yīng)的表,不需要自己手動執(zhí)行SQL。
備注:對已有的 models 進行修改,Django 1.7之前的版本的Django都是無法自動更改表結(jié)構(gòu)的,不過有第三方工具 south,詳見 Django 數(shù)據(jù)庫遷移 一節(jié)。
使用開發(fā)服務(wù)器
開發(fā)服務(wù)器,即開發(fā)時使用,一般修改代碼后會自動重啟,方便調(diào)試和開發(fā),但是由于性能問題,建議只用來測試,不要用在生產(chǎn)環(huán)境。
python manage.py runserver
# 當(dāng)提示端口被占用的時候,可以用其它端口:
python manage.py runserver 8001
python manage.py runserver 9999
(當(dāng)然也可以kill掉占用端口的進程,具體后面有講,此處想知道的同學(xué)可查下 lsof 命令用法)
# 監(jiān)聽機器所有可用 ip (電腦可能有多個內(nèi)網(wǎng)ip或多個外網(wǎng)ip)
python manage.py runserver 0.0.0.0:8000
# 如果是外網(wǎng)或者局域網(wǎng)電腦上可以用其它電腦查看開發(fā)服務(wù)器
# 訪問對應(yīng)的 ip加端口,比如 http://172.16.20.2:8000
清空數(shù)據(jù)庫
python manage.py flush
此命令會詢問是 yes 還是 no, 選擇 yes 會把數(shù)據(jù)全部清空掉,只留下空表。
創(chuàng)建超級管理員
python manage.py createsuperuser
# 按照提示輸入用戶名和對應(yīng)的密碼就好了郵箱可以留空,用戶名和密碼必填
# 修改 用戶密碼可以用:
python manage.py changepassword username
導(dǎo)出數(shù)據(jù) 導(dǎo)入數(shù)據(jù)
python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json
關(guān)于數(shù)據(jù)操作 詳見:數(shù)據(jù)導(dǎo)入數(shù)據(jù)遷移,現(xiàn)在了解有這個用法就可以了。
Django 項目環(huán)境終端
python manage.py shell
如果你安裝了 bpython 或 ipython 會自動用它們的界面,推薦安裝 bpython。
這個命令和 直接運行 python 或 bpython 進入 shell 的區(qū)別是:你可以在這個 shell 里面調(diào)用當(dāng)前項目的 models.py 中的 API,對于操作數(shù)據(jù),還有一些小測試非常方便。
數(shù)據(jù)庫命令行
python manage.py dbshell
Django 會自動進入在settings.py中設(shè)置的數(shù)據(jù)庫,如果是 MySQL 或 postgreSQL,會要求輸入數(shù)據(jù)庫用戶密碼。
在這個終端可以執(zhí)行數(shù)據(jù)庫的SQL語句。如果您對SQL比較熟悉,可能喜歡這種方式。
更多命令
終端上輸入 python manage.py 可以看到詳細(xì)的列表,在忘記子名稱的時候特別有用。