Django-編寫你的第一個Django應用程式2
建立投票應用程式
您在Django中編寫的每個應用程式都包含遵循特定約定的Python包。 Django帶有一個實用程式,可以自動生成應用程式的基本目錄結構,因此您可以專注於編寫程式碼而不是建立目錄。
1、專案與應用程式
專案和應用程式有什麼區別? 應用程式是一種Web應用程式,它可以執行某些操作,例如Weblog系統,公共記錄資料庫或簡單的民意調查應用程式。 專案是特定網站的配置和應用程式的集合。 專案可以包含多個應用程式。 一個應用程式可以在多個專案中。
2、建立應用
要建立您的應用,請確保您與manage.py位於同一目錄中,然後輸入以下命令:
$ python manage.py startapp polls
這將建立一個名為polls的目錄,其佈局如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
該目錄結構將容納poll app。
寫下你的第一個view
1、新增檢視
開啟檔案polls/views.py並在其中放入以下Python程式碼:
from django.http import HttpResponse
def index(request):
return HttpResponse( "Hello, world. You're at the polls index.")
2、呼叫檢視
要呼叫檢視,我們需要將它對映到一個URL - 為此我們需要一個URLconf。 要在polls目錄中建立URLconf,請建立一個名為urls.py的檔案。 你的app目錄現在應該如下所示:
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指向polls.urls模組。 在mysite/urls.py中, 加入一個django.urls.include的import, 然後插入一個 include()函式 在 urlpatterns 列表中, 如下:
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('polls/', include('polls.urls')),# 新增
path('admin/', admin.site.urls),
]
include() 函式允許引用其他URLconfs. 每當Django遇到include()時,它會截斷與該點匹配的URL的任何部分,並將剩餘的字串傳送到包含的URLconf以供進一步處理。
使用include()的目的是為了讓URL更易進行熱插拔(plug-and-play)。 由於polls是在他自己的URLconf(polls/urls.py),他們可以被放置在“/ polls /”,或“/ fun_polls /”下,或“/ content / polls /” ,或任何其他路徑的根,應用程式將仍然工作。
何時使用include()?包含其他網址格式時,您應始終使用include()。 admin.site.urls 是唯一的例外。
啟動伺服器,並在瀏覽器中轉到http://localhost:8000/polls/,您應該看到文字“Hello, world. You’re at the polls index.“,這就是index檢視中定義的文字內容。
3、path()函式
path()函式傳遞四個引數,兩個引數:route和view,以及兩個可選的引數:kwargs ,和name。 在這一點上,值得回顧一下這些引數是什麼。
path()引數:route route是一個包含URL模式的字串。 在處理請求時,Django從urlpatterns中的第一個正則開始並在列表中向下匹配,將所請求的URL與每個正則進行匹配,直到找到匹配的正則。
正則表示式不搜尋GET和POST引數或域名。 例如,在https://www.example.com/myapp/的請求中,URLconf將查詢myapp /。 在https://www.example.com/myapp/?page=3的請求中,URLconf也會查詢myapp/。
path()引數:view 當Django找到匹配的正則時,它會以HttpRequest物件作為第一個引數和route中的任何“捕獲”值作為關鍵字引數來呼叫指定的檢視函式。 我們將稍微舉一個例子。
path()引數:kwargs 任意關鍵字引數可以在字典中傳遞給目標檢視。 我們不打算在教程中使用Django的這個特性。
path()引數:name 命名您的URL可以讓您從Django其他地方明確地引用它,特別是在模板中。 這個強大的功能允許您在只操作單個檔案的情況下對專案的URL正則進行全域性更改。