《玩轉Django2.0》讀書筆記-編寫URL規則html
做者:尹正傑 python
版權聲明:原創做品,謝絕轉載!不然將追究法律責任。正則表達式
URL(Uniform Resource Locator,統一資源定位符)是對能夠從互聯網上獲得對資源位置和訪問方法對一種簡介對錶示,是互聯網砂鍋標準資源的地址。互聯網上的每一個文件都有一個惟一的URL,用於指出文件的路徑爲孩子。簡單地說,URL就是常說的網址,每一個地址表明不一樣的網頁,在Django中,URL也稱爲URLconf。django
一.URL編寫規則瀏覽器
以下圖所示,在講解URL編寫規則以前,需對MyWeb項目的目錄進行調整,使其更符合開發規範性。在每一個App中設置獨立的靜態資源和模板文件並添加一個空白的內容的.py文件,命名爲urls.py。
在App裏添加urls.py是將App的URL都寫入該文件中,而項目根目錄的urls.py是將每一個App的urls.py統一管理。
當程序收到用戶請求的時候,首先在根目錄的urls.py查找該URL是屬於哪一個App,而後再從App的urls.py找到具體的URL信息。在根目錄的urls.py編寫URL規則以下:ide
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.contrib import admin #導入Admin功能模塊 from django.urls import path,include #導入URL編寫模塊 ''' urlpatterns: 整個項目的URL集合,每一個元素表明一條URL信息。 path('admin/', admin.site.urls): 設定Admin的URL。'admin/'表明「http://127.0.0.1:8000/admin」地址信息,'admin'後面的斜槓是路徑分隔符; 「admin.site.urls」是URL的處理函數,也稱爲視圖函數。 path('',include('index.urls')): URL爲空,表明爲網站的域名,即「http://127.0.0.1:8000/」,一般是網站的首頁;include是將該URL分發給index的urls.py處理。 ''' urlpatterns = [ path('admin/', admin.site.urls), path('',include('index.urls')) ]
因爲首頁的地址分發給index.urls.py處理,所以下一步須要對index的urls.py編寫URL信息,代碼以下:函數
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.urls import path #導入URL編寫模塊 from . import views #導入當前目錄(該文件存放的同一目錄)下的views.py文件 ''' urlpatterns: 整個項目的URL集合,每一個元素表明一條URL信息。 path('', views.index): URL爲空,表明爲網站的域名,即「http://127.0.0.1:8000/」,一般是網站的首頁;還寄給上面咱們導入了「views」這個文件嗎? 該文件用於編寫視圖函數,處理URL請求信息並返回網頁給用戶。「views.index」表示咱們調用了views文件中的index函數(換句話說,當 用戶訪問首頁是,就會觸發「views.index」函數的執行)。所以咱們在這裏指定後,須要在「views」這個文件裏編寫對應的「index」函數。 ''' urlpatterns = [ path('', views.index), ]
index的urls.py編寫規則與根目錄的urls.py大體相同,基本上全部的URL都是有固定編寫格式的。上述代碼倒入了同一目錄喜好的views.py文件,該文件用於編寫視圖函數,處理URL請求信息並返回網頁內容給用戶。所以,在views.py中編寫index函數的處理過程,代碼以下:網站
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.http import HttpResponse #用於給用戶響應信息。 ''' index函數必須設置參數request,該參數表明當前用戶的請求對象,該對象包含用戶名,請求內容和請求方式等信息,視圖函數 執行完成後必須使用return將處理結果返回,不然程序會拋出異常信息。 ''' def index(request): return HttpResponse("尹正傑到此一遊!")
啓動MyWeb項目,在瀏覽器中打開「http://127.0.0.1:8000/」,運行結果以下圖所示:ui
二.帶變量帶URLurl
在平常開發過程當中,有時候一個URL能夠表明多個不一樣的頁面,如編寫帶有日期的URL,若根據前面的編寫方式,按一年計算,則須要開發者編寫365個不一樣的URL才能實現,這種作法明顯是不可取的。所以,Django在編寫的是URL時,能夠對URL設置變量值,使URL具備多樣性。
URL的變量類型有字符類型,整型,slug和uuid,最爲經常使用的是字符類型和整型。各個類型說明以下:
字符類型(str): 匹配任何非空字符串,但不含斜槓,感嘆號之類的特殊字符。若是沒有指定類型,默認使用該類型。 整型(int): 匹配0和正整數。 slug: 可理解爲註釋,後綴或附屬等概念,常做爲URL的解釋性字符。可匹配任何ASCII字符以及連接符和下劃線,能使URL更加清晰易懂。好比網頁的標題的是「尹正傑博客」,其URL能夠設置爲「yin-zheng-jie-blog」。 uuid: 匹配一個uuid格式的對象。爲了防止衝突,規定必須使用破折號而且全部字母必須都小寫,例如:6456853c-92d3-4465-a7be-83bdf4ce999
根據上述變量類型,在index的urls.py裏添加帶有字符類型,整型和slug的URL地址信息,代碼以下:
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.urls import path #導入URL編寫模塊 from . import views #導入當前目錄(該文件存放的同一目錄)下的views.py文件 ''' urlpatterns: 整個項目的URL集合,每一個元素表明一條URL信息。 path('', views.index): URL爲空,表明爲網站的域名,即「http://127.0.0.1:8000/」,一般是網站的首頁;還寄給上面咱們導入了「views」這個文件嗎? 該文件用於編寫視圖函數,處理URL請求信息並返回網頁給用戶。「views.index」表示咱們調用了views文件中的index函數(換句話說,當 用戶訪問首頁是,就會觸發「views.index」函數的執行)。所以咱們在這裏指定後,須要在「views」這個文件裏編寫對應的「index」函數。 path('<year>!<int:month>!<slug:day>',views.madate): 在URL中使用變量符合「<>」能夠爲URL設置變量。在括號裏面以冒號劃分爲兩部分,前面表明的是變量的數據類型,後面表明的是變量 名,變量名可自行命名。上述代碼對新政的URL設置了三個變量值,分別是<year>,<int:month>和<slug:day>,變量說明以下: <slug:day>: 變量名稱爲year,數據格式爲字符類型,與<str:year>的含義同樣。 <int:month>: 變量名稱爲month,數據格式爲整型。 <slug:day>: 變量名爲day,數據類型爲slug 舒適提示:上面中的各個變量之間使用「!」對各個變量進行分隔。固然你也能夠設置爲「/」進行分隔,不推薦使用"#",由於在URL中他有特定的含義。 ''' urlpatterns = [ path('', views.index), path('<year>!<int:month>!<slug:day>',views.madate) ]
而後在views.py中編寫視圖函數mydate的處理方法,代碼以下:
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.http import HttpResponse #用於給用戶響應信息。 ''' index函數必須設置參數request,該參數表明當前用戶的請求對象,該對象包含用戶名,請求內容和請求方式等信息,視圖函數 執行完成後必須使用return將處理結果返回,不然程序會拋出異常信息。 ''' def index(request): return HttpResponse("尹正傑到此一遊!") ''' 試圖函數的mydate有4個函數參數,其中year,month,和day是來自與URL的變量。URL的變量和視圖的函數的參數與URL的變量。 URL的變量和視圖函數的參數要一一對應,若是視圖函數的參數與URL的變量對應不上,那麼程序會拋出參數不相符的報錯信息。 ''' def madate(request,year,month,day): return HttpResponse(str(year) + "-" + str(month) + "-" +str(day))
啓動項目,在瀏覽器上輸入:「http://127.0.0.1:8000/2008!10!11」,運行結果以下圖所示:
在上述例子中,URL的變量分別表明年,月,日。從變量的數據類型能夠看出,變量值只要符合數據格式都是合法的,使得某些變量值不符合日期格式要求。爲了進一步規範日期格式,可使用正則表達式限制URL可變範圍。正則表達式的URL編寫以下:
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.urls import path,re_path #導入URL編寫模塊,path只是普通的URL定義,而re_path則支持正則表達式 from . import views #導入當前目錄(該文件存放的同一目錄)下的views.py文件 ''' urlpatterns: 整個項目的URL集合,每一個元素表明一條URL信息。 path('', views.index): URL爲空,表明爲網站的域名,即「http://127.0.0.1:8000/」,一般是網站的首頁;還寄給上面咱們導入了「views」這個文件嗎? 該文件用於編寫視圖函數,處理URL請求信息並返回網頁給用戶。「views.index」表示咱們調用了views文件中的index函數(換句話說,當 用戶訪問首頁是,就會觸發「views.index」函數的執行)。所以咱們在這裏指定後,須要在「views」這個文件裏編寫對應的「index」函數。 path('<year>!<int:month>!<slug:day>',views.madate): 在URL中使用變量符合「<>」能夠爲URL設置變量。在括號裏面以冒號劃分爲兩部分,前面表明的是變量的數據類型,後面表明的是變量 名,變量名可自行命名。上述代碼對新政的URL設置了三個變量值,分別是<year>,<int:month>和<slug:day>,變量說明以下: <slug:day>: 變量名稱爲year,數據格式爲字符類型,與<str:year>的含義同樣。 <int:month>: 變量名稱爲month,數據格式爲整型。 <slug:day>: 變量名爲day,數據類型爲slug 舒適提示:上面中的各個變量之間使用「!」對各個變量進行分隔。固然你也能夠設置爲「/」進行分隔,不推薦使用"#",由於在URL中他有特定的含義。 re_path('(?P<year>[0-9]{4}/?P<month>[0-9]{2}/?P<day>[0-9]{2}).html',views.madate): 在URL中引用正則表達式,首先導入re_path功能模塊,正則表達式的做用是對URL的變量進行截取與判斷,以小括號表示,每一個小括號 的先後可使用斜槓或者其餘字符將其分隔。如下代碼爲例,分別將year,month和day以斜槓分隔,每一個變量以一個小括號爲單位,在小括 號內,可分爲三部分,以(?P<year>[0-9]{4})爲例進行介紹。 ?P: 是固定格式。 <year>: 是變量的編寫規則 [0-9]{4}: 是正則表達式的匹配模式,表明變量的長度是4,只容許取0-9的值。 值得注意的是,若是URL的末端使用正則表達式,那麼在該URL的末端應加上斜槓或者其餘字符,不然正則表達式沒法生效。如下代碼 爲例的變量day,若在末端沒有設置「.html」,則在瀏覽器上輸入無限長的字符串,程序也能正常訪問。 ''' urlpatterns = [ path('', views.index), #path('<year>!<int:month>!<slug:day>',views.madate) # re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html',views.madate), re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html', views.madate), ]
三.設置參數name
除了在URL裏面設置變量以外,Django還能夠對URL進行命名。在index對url.py,views.py和模板myyear.html中添加以下代碼:
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.urls import path,re_path #導入URL編寫模塊,path只是普通的URL定義,而re_path則支持正則表達式 from . import views #導入當前目錄(該文件存放的同一目錄)下的views.py文件 ''' urlpatterns: 整個項目的URL集合,每一個元素表明一條URL信息。 path('', views.index): URL爲空,表明爲網站的域名,即「http://127.0.0.1:8000/」,一般是網站的首頁;還寄給上面咱們導入了「views」這個文件嗎? 該文件用於編寫視圖函數,處理URL請求信息並返回網頁給用戶。「views.index」表示咱們調用了views文件中的index函數(換句話說,當 用戶訪問首頁是,就會觸發「views.index」函數的執行)。所以咱們在這裏指定後,須要在「views」這個文件裏編寫對應的「index」函數。 path('<year>!<int:month>!<slug:day>',views.madate): 在URL中使用變量符合「<>」能夠爲URL設置變量。在括號裏面以冒號劃分爲兩部分,前面表明的是變量的數據類型,後面表明的是變量 名,變量名可自行命名。上述代碼對新政的URL設置了三個變量值,分別是<year>,<int:month>和<slug:day>,變量說明以下: <slug:day>: 變量名稱爲year,數據格式爲字符類型,與<str:year>的含義同樣。 <int:month>: 變量名稱爲month,數據格式爲整型。 <slug:day>: 變量名爲day,數據類型爲slug 舒適提示:上面中的各個變量之間使用「!」對各個變量進行分隔。固然你也能夠設置爲「/」進行分隔,不推薦使用"#",由於在URL中他有特定的含義。 re_path('(?P<year>[0-9]{4}/?P<month>[0-9]{2}/?P<day>[0-9]{2}).html',views.madate): 在URL中引用正則表達式,首先導入re_path功能模塊,正則表達式的做用是對URL的變量進行截取與判斷,以小括號表示,每一個小括號 的先後可使用斜槓或者其餘字符將其分隔。如下代碼爲例,分別將year,month和day以斜槓分隔,每一個變量以一個小括號爲單位,在小括 號內,可分爲三部分,以(?P<year>[0-9]{4})爲例進行介紹。 ?P: 是固定格式。 <year>: 是變量的編寫規則 [0-9]{4}: 是正則表達式的匹配模式,表明變量的長度是4,只容許取0-9的值。 值得注意的是,若是URL的末端使用正則表達式,那麼在該URL的末端應加上斜槓或者其餘字符,不然正則表達式沒法生效。如下代碼 爲例的變量day,若在末端沒有設置「.html」,則在瀏覽器上輸入無限長的字符串,程序也能正常訪問。 ''' urlpatterns = [ path('', views.index), #path('<year>!<int:month>!<slug:day>',views.madate) # re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html',views.madate), re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html', views.madate), # 帶參數name的URL re_path('(?P<year>[0-9]{4}).html', views.mayear, name='mayear'), ]
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.http import HttpResponse #用於給用戶響應信息。 from django.shortcuts import render #用於網頁渲染的模塊 ''' index函數必須設置參數request,該參數表明當前用戶的請求對象,該對象包含用戶名,請求內容和請求方式等信息,視圖函數 執行完成後必須使用return將處理結果返回,不然程序會拋出異常信息。 ''' def index(request): return HttpResponse("尹正傑到此一遊!") ''' 試圖函數的mydate有4個函數參數,其中year,month,和day是來自與URL的變量。URL的變量和視圖的函數的參數與URL的變量。 URL的變量和視圖函數的參數要一一對應,若是視圖函數的參數與URL的變量對應不上,那麼程序會拋出參數不相符的報錯信息。 ''' def madate(request,year,month,day): return HttpResponse(str(year) + "-" + str(month) + "-" +str(day)) # 參數name的URL的視圖函數 def mayear(request, year): return render(request, 'myyear.html')
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {# 在以往,大多數開發者都是採用這種方式在木板上設置每一個標籤的a的href的屬性值,若是URL地址發生變動,就要修改每一個標籤a的href屬性值,這種方式不利於URL的變動和維護。#} <div><a href="/2018.html">2018 old Archive</a></div> {# 和上面不一樣的,咱們採用Django的模板語法,咱們在URL中設置參數name,只要參數name的值不變,不管URL地址信息如何修改都無須修改模板中標籤a的href屬性值。#} <div><a href="{% url 'mayear' 2018 %}">2018 Archive</a></div> </body> </html>
上述代碼分別從URL,視圖函數和HTML模版來講明參數name的具體做用,整個執行流程以下:
1>.當用戶訪問URL時,項目根據URL信息選擇視圖函數mayear,並將該URL命名爲mayear。
2>.視圖函數mayear將模板myyear.html做爲響應內容並生成相應的網頁返回給用戶
3>.在模板myyear.html中分別設置兩個標籤a,雖然兩個標籤a的href屬性只的寫法有所不一樣,但實質上二者都指向命名爲mayear的URL地址信息。
4>.第二個標籤a的href爲"{% url 'mayear' 2018 %}",這裏是Django 的模板語法,模板語法以{%%}表示。其中,url 'mayear' 是將命名爲「mayear」的URL地址信息做爲href屬性值;2018是該URL的變量year,若URL沒有設置變量值,則無需添加。
從上述例子能夠看到,模板中的mayear與urls.py所設置的參數name是一一對應的。參數name的做用是對該URL地址信息進行命名,而後在HTML模板中使用能夠生成相應的URL信息。在瀏覽器的地址欄輸入:「http://127.0.0.1:8000/2018.html」,運行結果以下圖所示:
四.設置額外參數
除了參數name以外,還有一種參數類型是以字典的數據類型傳遞的,該參數沒有具體命名,只要是字典像是便可,並且該參數只能在有視圖函數中讀取和使用,其代碼以下:(Django還能夠對URL進行命名。在index對url.py,views.py和模板myyear.html中添加以下代碼:)
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.urls import path,re_path #導入URL編寫模塊,path只是普通的URL定義,而re_path則支持正則表達式 from . import views #導入當前目錄(該文件存放的同一目錄)下的views.py文件 ''' urlpatterns: 整個項目的URL集合,每一個元素表明一條URL信息。 path('', views.index): URL爲空,表明爲網站的域名,即「http://127.0.0.1:8000/」,一般是網站的首頁;還寄給上面咱們導入了「views」這個文件嗎? 該文件用於編寫視圖函數,處理URL請求信息並返回網頁給用戶。「views.index」表示咱們調用了views文件中的index函數(換句話說,當 用戶訪問首頁是,就會觸發「views.index」函數的執行)。所以咱們在這裏指定後,須要在「views」這個文件裏編寫對應的「index」函數。 path('<year>!<int:month>!<slug:day>',views.madate): 在URL中使用變量符合「<>」能夠爲URL設置變量。在括號裏面以冒號劃分爲兩部分,前面表明的是變量的數據類型,後面表明的是變量 名,變量名可自行命名。上述代碼對新政的URL設置了三個變量值,分別是<year>,<int:month>和<slug:day>,變量說明以下: <slug:day>: 變量名稱爲year,數據格式爲字符類型,與<str:year>的含義同樣。 <int:month>: 變量名稱爲month,數據格式爲整型。 <slug:day>: 變量名爲day,數據類型爲slug 舒適提示:上面中的各個變量之間使用「!」對各個變量進行分隔。固然你也能夠設置爲「/」進行分隔,不推薦使用"#",由於在URL中他有特定的含義。 re_path('(?P<year>[0-9]{4}/?P<month>[0-9]{2}/?P<day>[0-9]{2}).html',views.madate): 在URL中引用正則表達式,首先導入re_path功能模塊,正則表達式的做用是對URL的變量進行截取與判斷,以小括號表示,每一個小括號 的先後可使用斜槓或者其餘字符將其分隔。如下代碼爲例,分別將year,month和day以斜槓分隔,每一個變量以一個小括號爲單位,在小括 號內,可分爲三部分,以(?P<year>[0-9]{4})爲例進行介紹。 ?P: 是固定格式。 <year>: 是變量的編寫規則 [0-9]{4}: 是正則表達式的匹配模式,表明變量的長度是4,只容許取0-9的值。 值得注意的是,若是URL的末端使用正則表達式,那麼在該URL的末端應加上斜槓或者其餘字符,不然正則表達式沒法生效。如下代碼 爲例的變量day,若在末端沒有設置「.html」,則在瀏覽器上輸入無限長的字符串,程序也能正常訪問。 ''' urlpatterns = [ path('', views.index), #path('<year>!<int:month>!<slug:day>',views.madate) # re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html',views.madate), re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html', views.madate), # 帶參數name的URL re_path('(?P<year>[0-9]{4}).html', views.mayear, name='mayear'), # 參數爲字典的URL re_path('dict/(?P<year>[0-9]{4}).htm', views.myyear_dict, {'month': '05'}, name='myyear_dict') ]
#!/usr/bin/env python3 #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com from django.http import HttpResponse #用於給用戶響應信息。 from django.shortcuts import render #用於網頁渲染的模塊 ''' index函數必須設置參數request,該參數表明當前用戶的請求對象,該對象包含用戶名,請求內容和請求方式等信息,視圖函數 執行完成後必須使用return將處理結果返回,不然程序會拋出異常信息。 ''' def index(request): return HttpResponse("尹正傑到此一遊!") ''' 試圖函數的mydate有4個函數參數,其中year,month,和day是來自與URL的變量。URL的變量和視圖的函數的參數與URL的變量。 URL的變量和視圖函數的參數要一一對應,若是視圖函數的參數與URL的變量對應不上,那麼程序會拋出參數不相符的報錯信息。 ''' def madate(request,year,month,day): return HttpResponse(str(year) + "-" + str(month) + "-" +str(day)) # 參數name的URL的視圖函數 def mayear(request, year): return render(request, 'myyear.html') # 參數爲字典的URL的視圖函數 def myyear_dict(request, year, month): return render(request, 'myyear_dict.html',{'month':month})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="{% url 'myyear_dict' 2018 %}">2018 {{ month }} Archive</a> </body> </html>
上述代碼分別從URL,視圖函數和HTML模板來講明URL額外參數的具體做用,說明以下 :
除了在URL地址信息中設置擦數name以外,還加入了參數{'month':'05'},該參數用於設置參數month,參數值爲05.
而後視圖函數myyear_dict獲取了變量year和參數month,前者設置在URL地址中,然後者在URL地址外。
最後視圖函數將參數month的值傳遞到HTML模板並生成HTML網頁返回給用戶。在瀏覽器端輸入:「http://127.0.0.1:8000/dict/2018.htm」,運行結果以下:
在編寫URL規則時,若是須要設置額外參數,設置規則以下: