URL編寫規則
URL(Uniform Resource Locator,統一資源定位符)是互聯網上標準資源地址。用於指出文件的路徑位置。Django中,URL也成爲URLconf。
每個App中設置獨立的靜態資源和模板文件夾並添加一個.py文件,命名爲urls.py。
在App的urls.py中寫入對應URL,項目根目錄urls.py 來管理每個App中的urls.py文件。根目錄下urls.py編寫URL規則如下:
項目目錄下的urls.py
from django.contrib import admin
from django.urls import path,include
urlpattern
path('admin/',admin.site.urls),
path('',include('index.urls'))
首頁地址分發給了index的urls.py處理,因此需要配置index的urls.py編寫信息,代碼如下:
index的urls.py編寫規則與根目錄urls.py大致相同,基本上所有的URL都是有固有的編寫格式。
上述代碼導入了同一目錄下的views.py文件,該文件用於編寫視圖函數,處理URL請求信息並且返回網頁給用戶。代碼如下:
index函數必須設置參數request,該參數代表當前用戶的請求對象。包括:用戶名,請求內容,請求方式等信息。啓動djangoDemo項目後
運行結果如下:
帶變量的URL
日常開發過程中,有時一個URL可以代表多個不同的頁面,如編寫帶有日期的URL,根據前面編寫方式,按照一年計算,需要開發者編寫365個
不同的URL才 能實現,這種做法顯然不可取,因此Django在編寫URL時,需要對URL設置變量,使URL具有多樣性。
URL的變量類型有字符類型、整型、slug和uuid,最爲常見的是字符型和整型。
● 字符類型:匹配任何非空字符串,不含斜槓。沒有指定類型時,默認該類型
● 整型: 匹配0和正整數
● slug: 可以理解爲註釋、後綴或附屬等概念
● uuid: 匹配一個uuid格式的對象
UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟件建構的標準
根據上述變量類型,在index的urls.py裏添加帶有字符類型、整型和slug的URL地址信息,代碼如下:
在URL中使用變量符號“<>”可以爲URL設置變量。括號裏面以冒號劃分爲兩部分,前面代表變量類型,後面代表變量名稱,變量名稱可自定義。
上述URL中設置三個變量值,分別是<year>、<int:month>、<slug:day>,變量說明如下:
● <year> 變量名爲year,數據格式爲字符類型,與<str:year>含義一樣
● <int:month> 變量名爲month,數據格式爲整型
● <slug:day> 變量名爲day,數據類型爲slug
然後在views.py中編寫視圖函數mydate的處理方法,代碼如下:
視圖函數mydate有四個函數參數,其中year、month和day來自URL的變量。URL的變量和試圖函數要一一對應,如果試圖函數的參數與URL變量對
應不上會拋出異常。項目啓動如下:
設置name
除了URL裏面設置變量之外,Django還可以對URL進行重命名。在index的urls.py、views.py和模板myyear.html中添加如下代碼:
● urls.py
● views.py
● 創建templates文件夾,並且在templates文件夾中添加myyear.html文件
上述代碼分別從URL、視圖函數、HTML模板來說明name具體作用:
1. 用戶訪問URL,項目根據URL信息選擇試圖函數myyear處理,並且將URL命名myyear
2. 視圖函數myyear將模板myyeear.html作爲響應內容弄個並且生成相應的網頁返回給用戶
3. 在模板myyear.html中分別設置兩個標籤a,雖然兩個標籤a的href屬性值的寫法有所不同,但實質兩者都指向名爲myyeear的URL地址信息。
4. 第二個標籤a的href爲{% url 'myyear' 2018%},這是Django的模板語法,模板語法以{% %}表示。
其中,url ‘myyear' 是將命名爲myyear的URL地址信息作爲href屬性值
運行結果如下: