python學習第七十天:路由

來源:互聯網
上載者:User

標籤:pen   名稱空間   cut   append   pat   瀏覽器   war   修改   **kwargs   

(69天為作業講解)路由無名分組

url(r‘^test/([0-9]{4})/([0-9]{2})‘, views.test)

  • url為一個函數,第一個參數寫Regex
  • 路由從上往下匹配,一旦匹配成功就不繼續向下走了
  • 如果分多個組,相應的視圖函數就需要用多個參數接收,個數必須一致,或者使用*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>

python學習第七十天:路由

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.