要透過Django製作網站,urls.py可說是一切的起點。
由於每當使用者在瀏覽器上面輸入網址的時,urls.py 就會帶領使用者到達指定點位置。因此,我們可以在urls.py 裡設定每個網址可以到達的地方。
例如,下面是urls.py預設的狀態(
首度安裝完成後的狀態)。當我們啟動網站時,只要進入 http://127.0.0.1:8000/ 就可以看到Django預設的首頁。
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
如果我們在瀏覽器的網址列中輸入 http://127.0.0.1:8000/admin/ 的話,urls.py 會帶我們去 admin指定的 admin.site.urls 頁面。( http://127.0.0.1:8000/admin/login/?next=/admin/ )
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('hello/', admin.site.urls),
]
如上面的程式碼,現在我們將path('admin/', admin.site.urls), 改為 path('hello/', admin.site.urls), ,在瀏覽器的網址列中輸入 http://127.0.0.1:8000/admin/ ,將不再導向 admin.site.urls 頁面,反而會告訴你 :
Page not found (404) 。The current path, admin/, didn't match any of these.
但是,如果你在瀏覽器的網址列中輸入 http://127.0.0.1:8000/hello/ 時,urls.py 會帶我們去 hello 指定的 admin.site.urls 頁面。( http://127.0.0.1:8000/hello/login/?next=/hello/ )
urls.py 與views.py 的關係
接下來,我們改寫urls.py。在urls.py裡面的path寫上‘’,代表首頁,並且指定views.homePage為首頁要導向的位置。
from django.urls import path
urlpatterns = [
path('', views.homePage),
]
接著,我們建立一個views.py檔案,並且在裡面寫上一個函數homePage,希望瀏覽器到達首頁時,會顯示出Hello字串:
def homePage(request):
return 'Hello'
然後回到urls.py,加上
from . import views
讓urls.py 與views.py兩者關聯再一起。結果,我們得到錯誤訊息。
我們必須在views.py匯入HttpResponse。
from django.http import HttpResponse
並且改寫homePage函數為:
def homePage(request):
return HttpResponse('Hello')
再執行一次伺服器,我們可以看到首頁( http://127.0.0.1:8000/)成功出現 Hello 的字串。
如果我們在把homePage函數改寫為:
def homePage(request):
return HttpResponse('<h1>Hello</h1>')
重新整理,我們可以看到首頁( http://127.0.0.1:8000/)出現的 Hello 字串變大了。因為我們成功的替 Hello 加上了<h1>的html標籤。至此,我們已經完成了0到1的工作。現在我們可以來進行1到多的工作。我們可以透過同樣的方式增加另一個頁面:page。
首先,在 urls.py 增加一行: path('page/', views.inPage),
from django.urls import path
from . import views
urlpatterns = [
path('', views.homePage),
path('page/', views.inPage),
]
然後,在views.py增加一個新的函數:inPage。
def inPage(request):
return HttpResponse(' <h1> Hello Inside Page </h1> ')
再執行一次伺服器,如果你可以看到page頁面( http://127.0.0.1:8000/page/)成功出現 Hello Inside Page 的字串,就表示已經成功的複製第二個頁面。
留言
張貼留言