Django之路由系統

Django之路由系統

  • nazha對應內容 http://www.cnblogs.com/liwenzhou/p/8271147.htmlhtml

  • 前言: URL配置(URLconf)就像Django所支撐網站的目錄,它的本質是URL與要爲該URL調用的視圖函數之間的映射表前端

  • URLconf中配置python

    • 基本格式(django1.x版本)正則表達式

      • from django.conf.urls import url
        
        urlpatterns = [
             url(正則表達式, views視圖函數,參數,別名),
        ]
      • Django2.0版本格式django

        • from django.urls import 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),
          ]
    • 參數說明app

      1. Django路由系統匹配URL路徑的時候是從上到小按照註冊順序來的函數

      2. django的路由系統只匹配URL路徑,不匹配域名,端口和URL參數網站

      3. 分組匹配----》至關於給視圖函數傳位置參數url

      4. 分組命名匹配 ----》至關於給視圖函數傳關鍵字參數spa

        1. (?P<name>pattern) 其中name爲組的名稱,pattern爲匹配的模式
        • 注意:分組匹配和分組命名匹配不能混合使用
    • 實例:爲獲取某出版社某年某月出版的書的數量,

      • # urls.py中
        from app01 import views
        urlpatterns = [
            # url(r"^book_amount/([0-9]{4})/([0-9]{2})/$", views.book_list),      # 分組匹配
            url(r"^book_amount/(?P<year>[0-9]{4})/{?P<month>[0-9]{2}/$", views.book_list)     # 分組命名匹配
        ]
      • # views.py中
        def book_list(request,year,month):
          print(year,month)    #對於匹配的值能夠打印,類型爲字符串類型
      • 對於使用分組命名匹配,在views.py中可使用默認參數

      • def page(request, num="1"):
            pass
    • 給URL匹配模式器名字

      • name = "別名" ---》 起別名的目的是爲了反向解析URL的時候有依據
        • 起別名的做用是:動態匹配跳轉的頁面,直接經過名字name能夠找到,
      • 5mJArq.png
    • 經過名字反向解析

      • 在視圖函數中

        • from django.urls import reverse
          reverse("別名")
          reverse("名稱空間:別名", kwargs={"k1":v1})
          5mJNhR.png
      • 模板語言中

        • 在前端a標籤中,能夠經過下列代碼進行跳轉頁面

        • {% url "別名" "參數" %}
        • 5mJf1y.png

    • namespace模式

      • 當項目很大,頁面不少的時候,項目下urls.py中就會出現混亂,複雜,因此要用namespace模式,來進行分塊匹配

      • from django.conf.urls import url, include
        from teacherapp import urls as teacherurls
        urlpatterns = [
            url(r"^teacher/", include(teacherurls, namespace="teacher")),   # 二級目錄
        ]
      • 5mZ3BK.png

相關文章
相關標籤/搜索