本教程內(nèi)容已過時镰绎,更新版教程請訪問: Django 博客開發(fā)入門教程泛领。
這是 Django 博客教程的第 2 篇狠角,在閱讀此篇教程以前绒瘦,請確保你已閱讀 Django 博客教程的第 1 篇:
1. Django 博客教程:前言
本教程使用的開發(fā)環(huán)境
本教程寫作時開發(fā)環(huán)境的系統(tǒng)平臺為 Windows 10(64 位)巴碗,Python 版本為 3.5.2 (64 位)朴爬,django 版本為 1.10.6。建議盡可能地與教程的開發(fā)環(huán)境保持一致(尤其是 Python 與 django 版本)良价。建議的 Python 版本為 3.4 或以上寝殴,django 版本號必須為 1.10.x。
注:本教程將盡量保證兼容 Python 2明垢,但不會在 Python 2 環(huán)境下做測試蚣常。如果你因為某種原因必須使用 Python 2,你可以在你的 Python 2 環(huán)境下嘗試運行教程里的代碼痊银,應該能夠順利運行抵蚊,因為 django 本身支持 Python 2 和 Python 3,不過 django 官方建議 Python 2 的版本號最好是 2.7.x溯革。如果你在 Python 2 下遇到問題贞绳,歡迎到社區(qū)的 [django 博客教程][1] 的分類下發(fā)帖報告這個問題。
[1]: http://pythonzh.cn/
安裝 Python
Windown 下安裝 Python 非常簡單致稀,去[這里][2]找到 Python 3.5 的下載地址冈闭,根據(jù)你的系統(tǒng)選擇 32 位或者 64 位的安裝包,下載好后雙擊安裝即可抖单。如果遇到問題萎攒,建議嘗試百度相關教程。如果始終無法解決矛绘,可以到[社區(qū)][1]發(fā)帖求助耍休。
[2]: https://www.python.org/downloads/release/python-352/
安裝完后檢測一下 Python 是否可以正常運行。在命令行輸入 python -v
货矮,如果成功輸出了 Python 的版本號羊精,說明已經(jīng)安裝成功了。如果提示命令未找到囚玫,而你又確定已經(jīng)安裝了 Python喧锦,多半是因為沒有把 Python 添加到環(huán)境變量。
C:\WINDOWS\system32>python -V
Python 3.5.2
Virtualenv
強烈推薦在 virtualenv(虛擬環(huán)境)下進行 django 的開發(fā)抓督。什么是 virtualenv裸违?virtualenv 是一個 Python 工具,使用它可以創(chuàng)建一個獨立的 Python 環(huán)境本昏。舉個例子供汛,假設你已經(jīng)在系統(tǒng)中安裝了 Python,并且在閱讀此教程前你還進行過一些 django 的學習,因此你通過 pip install django
安裝了 django怔昨,但不幸的是那時候安裝的 django 還是 1.8 版本∪妇茫現(xiàn)在我們教程使用的是最新版的 django 1.10.6,你肯定不愿意刪除掉舊版的 django 1.8趁舀,因為那可能導致你以前的那個項目無法運行了赖捌。我既想讓原本項目在 django 1.8 環(huán)境下運行,又想再安裝 django 1.10.6 開啟一個新項目矮烹,怎么辦呢越庇?使用 virtualenv 就能解決這個問題。它幫我們從系統(tǒng)的 Python 中克隆一個全新的環(huán)境出來奉狈,這個環(huán)境獨立于原來的 Python 環(huán)境卤唉,我們可以在這個新的運行環(huán)境下安裝 django 1.10.6,并且在這個新環(huán)境下運行我們的新項目仁期。virtualenv 的使用非常簡單桑驱,下面看看如何使用。
首先安裝它跛蛋,打開命令行工具熬的,輸入:
C:\WINDOWS\system32>pip install virtualenv
安裝成功后創(chuàng)建虛擬環(huán)境,指定一個你喜歡的目錄赊级,virtualenv 會把這個新的虛擬環(huán)境裝到你指定目錄下押框,例如我把它裝到 C:\Users\yangxg\Envs 目錄下,我把虛擬環(huán)境命名為 blogproject_env(也可以取任何你喜歡的名字)理逊,在命令欄運行如下命令:
C:\WINDOWS\system32>virtualenv C:\Users\yangxg\Envs\blogproject_env
新環(huán)境已經(jīng)創(chuàng)建好了橡伞,我們需要進入這個環(huán)境,運行 blogproject_env\Scripts 目錄下的 activate 程序激活它:
C:\WINDOWS\system32>C:\Users\yangxg\Envs\blogproject_env\Scripts\activate
(blogproject_env) C:\WINDOWS\system32>
此時看到命令提示符前面多了一個 (blogproject_env)
挡鞍,說明我們已經(jīng)成功進入了虛擬環(huán)境,接下來就可以開始安裝 django 了预烙。
安裝 django
django 的官方文檔對如何[安裝 django][3] 給出了詳細且明確的指導墨微,但我們目前用不上這些,只需簡單地 pip install django==1.10.6
就可以解決問題了扁掸。
[3]: https://docs.djangoproject.com/en/1.10/intro/install/#install-django
(blogproject_env) C:\WINDOWS\system32>pip install django==1.10.6
我們用 django==1.10.6
來安裝指定的 django 版本以保證和教程的版本一致翘县,避免不必要的麻煩。如果直接 pip install django
的話有可能安裝最新的 django 版本谴分,而不是 1.10.6锈麸。
注意命名提示符前的 (blogproject_env) 確保你始終處在虛擬環(huán)境中,如果你不小心退出了虛擬環(huán)境牺蹄,先按上面的步驟重新進入再安裝 django忘伞。
順便測試一下安裝是否成功,現(xiàn)在命令行輸入 python
以打開 Python 自帶的命令欄,然后輸入 import django
氓奈,如果沒有報錯就說明 django 安裝成功翘魄,最后通過 print(django.get_version())
打印出 django 的版本號,確保安裝了正確版本的 django :
(blogproject_env) C:\WINDOWS\system32>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
1.10.6
>>>
建立 django 工程
萬事已經(jīng)具備了舀奶,讓我們來建立我們的 django 工程暑竟。 django 工程(project)是我們項目代碼的容器。例如我們博客項目中所有的代碼(包括 django 為我們自動生成的以及我們自己寫的)都包含在這個工程里育勺,說白了就是用一個文件夾包起來的一系列 Python 代碼文件和 django 配置文件但荤。但我們不必去親自動手新建這個文件夾和代碼文件,django 的命令幫我們做了這些事情涧至。例如我把博客項目工程的代碼放在 C:\Users\yangxg\Workspace 腹躁,工程名我把它叫做 blogproject ,那么首先在命令行工具進入 C:\Users\yangxg\Workspace 這個目錄(如果你還停留在 Python 的命令欄里化借,先多按幾次 ctrl + c
跳出來):
(blogproject_env) C:\WINDOWS\system32>cd C:\Users\yangxg\Workspace
然后運行如下命令:
(blogproject_env) C:\Users\yangxg\Workspace>django-admin startproject blogproject
再次申明一定要在虛擬環(huán)境下運行這些命令潜慎,虛擬環(huán)境的標志就是命令提示符前有 (blogproject_env) 這樣的標記。以后所有的和 django 有關的命令都是在虛擬環(huán)境下運行蓖康,因此在運行前一定確保先開啟了虛擬環(huán)境铐炫。
進入工程所在目錄 C:\Users\yangxg\Workspace(你可能設置在其他路徑),你會發(fā)現(xiàn)多了一個名為 blogproject 的文件夾蒜焊,其內(nèi)部文件結(jié)構(gòu)如下:
blogproject /
manage.py
blogproject /
__init__.py
settings.py
urls.py
wsgi.py
最頂層的 blogproject/ 目錄是我們剛剛指定的工程目錄倒信,其下面有一個 manage.py 文件,manage 是管理的意思泳梆,顧名思義 manage.py 就是 django 為我們生成的管理我們這個項目的 Python 腳本文件鳖悠,以后用到時會再次介紹。與 manage.py 同級的還有一個名為 blogproject 的文件夾优妙,這里面存放了一些 django 的配置文件乘综,例如 settings.py 等等,以后用到時會詳細介紹套硼。此外卡辰,其下面的 __init__.py 指明了這是一個 Python 模塊包。Python 規(guī)定在一個文件夾里包含 __init__.py 文件來指明這是一個 Python 模塊包邪意,這樣你就可以在別的 Python 代碼中引入它九妈。
Hello django
網(wǎng)站需要運行在一個 web 服務器上,django 已經(jīng)為我們提供了一個用于本地開發(fā)的 web 服務器雾鬼。在命令行工具里進入到 manage.py 所在目錄萌朱,運行下面的命令就可以在本機上開啟一個 web 服務器:
(blogproject_env) C:\Users\yangxg\Workspace>cd C:\Users\yangxg\Workspace\blogproject
(blogproject_env) C:\Users\yangxg\Workspace\blogproject>python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 21, 2016 - 20:23:07
Django version 1.10.4, using settings 'blogproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
看到這樣的信息表明我們的服務器開啟成功,在瀏覽器輸入 http://127.0.0.1:8000/ 策菜,看到如下的頁面提示信息:
It worked!
Congratulations on your first Django-powered page.
Of course, you haven't actually done any work yet. Next, start your first app by running
python manage.py startapp [app_label]
.You're seeing this message because you have
DEBUG = True
in your Django settings file and you haven't configured any URLs. Get to work!
It worked! django 工作了晶疼!一切準備就緒酒贬,開始進入我們的 django 博客開發(fā)之旅了!
注:這是 manage.py 的第一個用法冒晰,運行它的 runserver 命令開啟本地開發(fā)服務器同衣,以后還會遇到更多的命令。
命令欄工具下按 Ctrl + c 可以退出開發(fā)服務器(按一次沒用的話連續(xù)多按幾次)壶运。重新開啟則再次運行 python manage.py runserver
另外我們 django 默認的語言是英語耐齐,所以顯示給我們的歡迎頁面是英文的。我們在 django 的配置文件里稍作修改蒋情,讓它支持中文埠况。用任何一個文本編輯器打開 settings.py 文件,找到如下的兩行代碼:
blogproject/blogproject/settings.py
## 其它配置代碼...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
## 其它配置代碼...
把 LANGUAGE_CODE
改為 zh-hans
棵癣,TIME_ZONE
改為 Asia/Shanghai
:
blogproject/blogproject/settings.py
# 其它配置代碼
LANGUAGE_CODE = 'zh-hans' # 把英文改為中文
TIME_ZONE = 'Asia/Shanghai' # 把國際時區(qū)改為中國時區(qū)
# 其它配置代碼
再次運行開發(fā)服務器辕翰,并在瀏覽器打開 http://127.0.0.1:8000/,可以看到 django 已經(jīng)支持中文了狈谊。
(blogproject_env) C:\Users\yangxg\Workspace\blogproject>python manage.py runserver
Performing system checks...
正常工作了喜命!
祝賀你的第一個由Django驅(qū)動的頁面。
當然河劝,您還沒有真正開始工作壁榕。接下來,請執(zhí)行
python manage.py startapp [app_label]
來創(chuàng)建您的第一個應用赎瞎。您看到此消息是由于Django的配置文件設置了
DEBUG = True
牌里,您還沒有配置任何路由URL。開始工作吧务甥。