1. 程式人生 > >Django-編寫你的第一個Django應用程式2

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正則進行全域性更改。