從上堂課我們知道如何架設Django的環境,並開啟一個專案,那今天會開始跟大家討論Views跟URL之間的關係,
Django的MTV架構如何送出 request 並得到 response
想像成function,收HttpRequest 物件,回傳HttpResponse 物件:
程式位置: classes/views.py
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("Hello Nuts!")
以上這幾段程式碼傳達什麼訊息呢?
從剛剛我們所設定的view,我們希望當有人瀏覽 http://127.0.0.1:8000/hellonuts/ 時 ,hello_world() 這個 view function 需要被執行,所以我們需要去設計當url後面帶hellonuts反應到哪個function,而這個對應關係就是 URL conf (URL configuration)。
定義:Django 收到 request 時,會一一比對 URL conf,決定要執行哪個 view function,我們通常寫在 urls.py內
現在我們來設定 Hello World 範例的 URL conf。
位置:mysite/urls.py
from django.conf.urls import include, url
from django.contrib import admin
from classes.views import hello_world #要記得import剛剛的view進來
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^hellonuts/$', hello_world),
]
從以上程式透過 url() function,其實我們傳入兩個參數(regex, view):
常常寫完後結果回瀏覽器看,怎麼會出現Error?
不管是任何時候,程式編寫完想要看結果
都要確認server在runningpython manage.py runserver
成功把server run起且沒有出現Error的話
可以看到我們的command line response
那這時候我們可以到剛剛urls.py裡面設的路徑/hellonuts
最後得到的結果
看到了url這個function。
雖然基本架構都是一樣的,但是 Django 2.0 已經改用 path 和 re_path 這兩個代替了。提醒一下。
感謝您的提醒!!
我的資訊更新太慢了
https://kinegratii.github.io/2017/09/25/django2-url-path/
參考資料。
path真的比url好用很多。