編寫你的第一個(gè) Django 應(yīng)用,第 1 部分?讓我們通過示例來學(xué)習(xí),。 通過這個(gè)教程,,我們將帶著你創(chuàng)建一個(gè)基本的投票應(yīng)用程序,。 它將由兩部分組成:
我們假定你已經(jīng)閱讀了 安裝 Django。你能知道 Django 已被安裝,,且安裝的是哪個(gè)版本,,通過在命令提示行輸入命令(由 $ 前綴)。 $ python -m django --version ...\> py -m django --version 如果這行命令輸出了一個(gè)版本號(hào),,證明你已經(jīng)安裝了此版本的 Django,;如果你得到的是一個(gè)“No module named django”的錯(cuò)誤提示,則表明你還未安裝,。 這個(gè)教程是為了 Django 2.2 寫的,,它支持 Python 3.5 和后續(xù)版本。如果 Django 的版本不匹配,,你可以通過頁面右下角的版本切換器切換到對(duì)應(yīng)你版本的教程,,或更新至最新版本。如果你正在使用一個(gè)較老版本的 Python,,在 我應(yīng)該使用哪個(gè)版本的 Python 來配合 Django? 查找一個(gè)合適的 Django 版本,。 你可以查看文檔 如何安裝 Django 來獲得關(guān)于移除舊版本,安裝新版本的流程和建議,。 從哪里獲得幫助: 如果你在閱讀或?qū)嵺`本教程中遇到困難, 請(qǐng)發(fā)消息給 django-users 或加入 #django on irc.freenode.net 來和其他的 Django 用戶交流,,他們也許能幫到你。 創(chuàng)建項(xiàng)目?如果這是你第一次使用 Django 的話,,你需要一些初始化設(shè)置,。也就是說,你需要用一些自動(dòng)生成的代碼配置一個(gè) Django project —— 即一個(gè) Django 項(xiàng)目實(shí)例需要的設(shè)置項(xiàng)集合,,包括數(shù)據(jù)庫配置,、Django 配置和應(yīng)用程序配置。 打開命令行,, $ django-admin startproject mysite ...\> django-admin startproject mysite 這行代碼將會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè) 注解 你得避免使用 Python 或 Django 的內(nèi)部保留字來命名你的項(xiàng)目,。具體地說,,你得避免使用像 我的代碼該放在哪,? 如果你曾經(jīng)是原生 PHP 程序員(沒有使用過現(xiàn)代框架),,你可能會(huì)習(xí)慣于把代碼放在 Web 服務(wù)器的文檔根目錄(諸如 把你的代碼放在文檔根目錄 以外 的某些地方吧,,比如 /home/mycode。 讓我們看看 mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py 這些目錄和文件的用處是:
用于開發(fā)的簡易服務(wù)器?讓我們來確認(rèn)一下你的 Django 項(xiàng)目是否真的創(chuàng)建成功了,。如果你的當(dāng)前目錄不是外層的 $ python manage.py runserver ...\> py manage.py runserver 你應(yīng)該會(huì)看到如下輸出: Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. 六月 11, 2019 - 15:50:53 Django version 2.2, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 注解 忽略有關(guān)未應(yīng)用最新數(shù)據(jù)庫遷移的警告,,稍后我們處理數(shù)據(jù)庫,。 你剛剛啟動(dòng)的是 Django 自帶的用于開發(fā)的簡易服務(wù)器,它是一個(gè)用純 Python 寫的輕量級(jí)的 Web 服務(wù)器,。我們將這個(gè)服務(wù)器內(nèi)置在 Django 中是為了讓你能快速的開發(fā)出想要的東西,,因?yàn)槟悴恍枰M(jìn)行配置生產(chǎn)級(jí)別的服務(wù)器(比如 Apache)方面的工作,除非你已經(jīng)準(zhǔn)備好投入生產(chǎn)環(huán)境了,。 現(xiàn)在是個(gè)提醒你的好時(shí)機(jī):千萬不要 將這個(gè)服務(wù)器用于和生產(chǎn)環(huán)境相關(guān)的任何地方,。這個(gè)服務(wù)器只是為了開發(fā)而設(shè)計(jì)的,。(我們在 Web 框架方面是專家,在 Web 服務(wù)器方面并不是,。) 現(xiàn)在,,服務(wù)器正在運(yùn)行,瀏覽器訪問 https://127.0.0.1:8000/,。你將會(huì)看到一個(gè)“祝賀”頁面,,隨著一只火箭發(fā)射,服務(wù)器已經(jīng)運(yùn)行了,。 更換端口 默認(rèn)情況下,, 如果你想更換服務(wù)器的監(jiān)聽端口,,請(qǐng)使用命令行參數(shù),。舉個(gè)例子,下面的命令會(huì)使服務(wù)器監(jiān)聽 8080 端口: $ python manage.py runserver 8080 ...\> py manage.py runserver 8080 如果你想要修改服務(wù)器監(jiān)聽的IP,,在端口之前輸入新的,。比如,為了監(jiān)聽所有服務(wù)器的公開IP(這你運(yùn)行 Vagrant 或想要向網(wǎng)絡(luò)上的其它電腦展示你的成果時(shí)很有用),,使用: $ python manage.py runserver 0:8000 ...\> py manage.py runserver 0:8000 0 是 0.0.0.0 的簡寫,。完整的關(guān)于開發(fā)服務(wù)器的文檔可以在 :djamdin:`runserver` 參考文檔中找到。 會(huì)自動(dòng)重新加載的服務(wù)器 用于開發(fā)的服務(wù)器在需要的情況下會(huì)對(duì)每一次的訪問請(qǐng)求重新載入一遍 Python 代碼,。所以你不需要為了讓修改的代碼生效而頻繁的重新啟動(dòng)服務(wù)器,。然而,一些動(dòng)作,,比如添加新文件,,將不會(huì)觸發(fā)自動(dòng)重新加載,這時(shí)你得自己手動(dòng)重啟服務(wù)器,。 創(chuàng)建投票應(yīng)用?現(xiàn)在你的開發(fā)環(huán)境——這個(gè)“項(xiàng)目” ——已經(jīng)配置好了,,你可以開始干活了。 在 Django 中,,每一個(gè)應(yīng)用都是一個(gè) Python 包,,并且遵循著相同的約定。Django 自帶一個(gè)工具,,可以幫你生成應(yīng)用的基礎(chǔ)目錄結(jié)構(gòu),,這樣你就能專心寫代碼,而不是創(chuàng)建目錄了,。 項(xiàng)目 VS 應(yīng)用 項(xiàng)目和應(yīng)用有啥區(qū)別,?應(yīng)用是一個(gè)專門做某件事的網(wǎng)絡(luò)應(yīng)用程序——比如博客系統(tǒng),或者公共記錄的數(shù)據(jù)庫,或者簡單的投票程序,。項(xiàng)目則是一個(gè)網(wǎng)站使用的配置和應(yīng)用的集合,。項(xiàng)目可以包含很多個(gè)應(yīng)用。應(yīng)用可以被很多個(gè)項(xiàng)目使用,。 你的應(yīng)用可以存放在任何 Python path 中定義的路徑,。在這個(gè)教程中,我們將在你的 請(qǐng)確定你現(xiàn)在處于 $ python manage.py startapp polls ...\> py manage.py startapp polls 這將會(huì)創(chuàng)建一個(gè) polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py 這個(gè)目錄結(jié)構(gòu)包括了投票應(yīng)用的全部內(nèi)容。 編寫第一個(gè)視圖?讓我們開始編寫第一個(gè)視圖吧,。打開 polls/views.py?
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.") 這是 Django 中最簡單的視圖。如果想看見效果,,我們需要將一個(gè) URL 映射到它——這就是我們需要 URLconf 的原因了,。 為了創(chuàng)建 URLconf,請(qǐng)?jiān)?polls 目錄里新建一個(gè) polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py 在 polls/urls.py?
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ] 下一步是要在根 URLconf 文件中指定我們創(chuàng)建的 mysite/urls.py?
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ] 函數(shù) 我們設(shè)計(jì) 何時(shí)使用 當(dāng)包括其它 URL 模式時(shí)你應(yīng)該總是使用 你現(xiàn)在把 $ python manage.py runserver ...\> py manage.py runserver 用你的瀏覽器訪問 http://localhost:8000/polls/,,你應(yīng)該能夠看見 "Hello, world. You're at the polls index." ,,這是你在 沒有找到頁面? 如果你在這里得到了一個(gè)錯(cuò)誤頁面,,檢查一下你是不是正訪問著http://localhost:8000/polls/ 而不應(yīng)該是 http://localhost:8000/,。 函數(shù)
|
|