django路由

 

路由

無名分組

url(r'^test/([0-9]{4})/([0-9]{2})', views.test)正則表達式

  • url爲一個函數,第一個參數寫正則表達式
  • 路由從上往下匹配,一旦匹配成功就不繼續向下走了
  • 若是分多個組,相應的視圖函數就須要用多個參數接收,個數必須一致,或者使用*args
  • 在setting裏設置:APPEND_SLASH=False,請求時,瀏覽器不會自動補全斜槓,帶上斜槓就匹配失敗
  • 僞靜態,方便搜索引擎收錄

有名分組

  • url(r'^test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})', views.test)
  • 相應的視圖函數中的參數名字和個數必須一致,不然會報錯,位置能夠顛倒
  • 有名分組能夠使用**kwargs接收
  • 分組捕獲的參數,都是str類型
  • 能夠能夠設置默認值

路由分發

  • 先導入from django.conf.urls import include
  • url(r'^app01/',include('app01.urls'))
  • 在相應的app裏建立urls.py文件
  • 文件中的urlpatterns不能變名字,其餘寫法與自帶的相同

反向解析

1.路由中,命一個名,url(r'^index/', views.index,name='n1') 2.在視圖函數裏導入from django.shortcuts import reverse # 拿到反向解析的url url = reverse('n1') 3.在模板裏使用時: {% url 'n1' %} 4.帶位置參數的反向解析 url(r'^index/([0-9]{4})/([0-9]{2})', views.index,name='n1') 在視圖中:url=reverse('n1',args=(2012,12,)) 在模板中:{% url 'n1' 2012 12 %} 5.帶關鍵字參數反向解析 url(r'^index/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})', views.index,name='n1') 在視圖中: 方法一:url=reverse('n1',args=(2012,12,) 方法二:url=reverse('n1',kwargs={'year'=2012,'month':12}) 在模板中: 方法一:{% url 'n1' 2012 12 %} 方法二:{% url 'n1' month=12 year=2012 %} 注意:按位置傳,順序必須是固定的 做用:修改路由中url的時候,其它地方不須要改動 

名稱空間

(知道它,可是建議不一樣app的url裏name不能重名,app的名字_name)
主urls中 url(r'^app01/', include('app01.urls',namespace='app01')), url(r'^app02/', include('app02.urls',namespace='app02')), app01的urls中 urlpatterns = [ url(r'^test',views.test3 ,name='test'), ] app02的urls中 urlpatterns = [ url(r'^test02',views.test3 ,name='test'), ] 在視圖函數中: url=reverse('app02:test') 在模板中: <a href="{% url 'app02:test' %}">點我跳到首頁</a>
相關文章
相關標籤/搜索