Django路由系統-URLconf配置、正則表達式簡述

Django路由系統

1.11版本官方文檔正則表達式

​ URL配置就像是Django項目的目錄,它的本質是URL與URL調用的函數之間的映射表,Django會根據URL配置,在遇到一個URL時,就去執行相應的函數。django

URLconf配置

基本格式

from django.conf.urls import url

urlpatterns = [
     url(正則表達式, views視圖,參數,別名),
]

【示例】瀏覽器

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

參數說明

  1. 正則表達式:對應一個字符串形式正則表達式
  2. views視圖:一個可調用的函數,一般是一個視圖函數
  3. 參數:可選項,字典形式,要傳遞給視圖函數的默認參數
  4. 別名:可選項,name參數

2.0版本中的路由系統的寫法

from django.urls import path,re_path
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]

2.0版本中的re_path和1.11版本的url用法相同

正則表達式概述

基本配置

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

注意事項

  1. urlpatterns中的元素按照書寫順序從上往下逐一匹配正則表達式,一旦匹配成功則再也不繼續;
  2. 若要從URL中捕獲一個值,只須要用()將值包括起來便可(分組匹配);
  3. 不須要添加一個前導的反斜槓,由於每個URL都有一個,好比:應該是^articles 而不是 ^/articles;
  4. 每一個正則表達式前面的r都是可選項,可是建議加上。

補充說明

​ Django settings.py配置文件中默認沒有 APPEND_SLASH 這個參數,但 Django 默認這個參數爲 APPEND_SLASH = True。 其做用就是自動在網址結尾加'/',在瀏覽器訪問的地址後面不爲/時,會自動跳轉至帶有/的路徑的配置項。app

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^jjzz/$', views.Index.as_view()),
    url(r'^fileupload/$', views.Upload.as_view()),
]

​ 如上段代碼所示,當咱們訪問訪問 http://www.example.com/jjzz 時,默認狀況下,Django會自動在網址後補加一個/,轉換成http://www.example.com/jjzz/,以下圖函數

​ 若是是在settings中設置了APPEND_SLASH=False,再請求 http://www.example.com/jjzz 就會提示找不到頁面。(所用格url爲筆者舉例使用!)url

相關文章
相關標籤/搜索