django的路由系統:url

在url文件中的經常使用配置:正則表達式

  Django 1.1版本
  from django.conf.urls improt urldjango

    urlpatterns=[app

        url(r'^ 正則表達式 $',views視圖,參數,別名),url

      ]spa

  Django 2.0版本之後blog

   from django.urls improt path字符串

    urlpatterns=[模板

        path('正則表達式',views視圖,參數,別名),import

      ]配置

分組:

  在正則表達式中加( )   如:  url(r'^del_publisher/(\d+)', views.del_publisher),

有名分組:

  在正則表達式中加( ?P<名字>)  如:  url(r'^blog/(?P<year>\d{4})/[1-9]{2}/$', views.blog)

  注意!!!  從URL上捕獲的參數都是字符串類型

引用其餘應用中的urls.py :  include的位置同樣都在conf.py文件內

    用django 1.1版本中的include

      from django.conf.urls import url,include

        urlpatterns=[

           url(r'^app01/$',include('app01.urls')),

          ]

    用django 2.0版本之後的include

      from django.urls improt path,include

        urlpatterns=[

           path('app01/',include('app01.urls')),

          ]

url命名和反向解析:

  1,命名: 在別名位置寫入name='名字' 

        如:url(r'^publisher_list/', views.publisher_list, name='publisher'),

  使用:

    不帶參數:

        1,在視圖中使用(views.py文件);

            from django.urls import reverse

            reverse('名字')    備註:經過名字得到對應的路徑

        2,在模板中使用(HTML.py文件):
            {% url '名字' %}    備註:經過名字得到對應的路徑

    帶有參數(分組):

        如: url(r'^blog/(\d{4})/([1-9]{2})/$', views.blog, name='blog')

        1,在視圖中使用:

            from django.urls import reverse

            revrese('名字',args=('參數','參數'))  備註:得到路徑,並將參數改爲本身輸入的  args是一個元組,若是隻有一個值需在參數後加逗號.

        2,在模板中使用:

            {% url '名字' '參數' '參數'  %}    備註:參數能夠有多個,用空格隔開
     帶有參數,並有命名分組:

        如: url(r'^blog/(?P<year>\d{4})/(?P<month>[1-9]{2})/$', views.blog, name='blog')

        1,在視圖中使用:

            reverse('名字',kwargs={'命名':'參數','命名':'參數'})

            也能夠用: revrese('名字',args=('參數','參數'))

        2,在模板中使用:

            {% url '名字' 命名='參數' 命名='參數'%}

namespace命名空間模式:  即便不一樣的APP使用相同的url名稱,也不會出錯.

    定義: url(r'^app01/$',include('app01.urls',namespace='app01')),

       在app01中的url   url(r'^home/$', views.home, name='home'),

    使用:

      視圖:

        reverse ('app01:名字')    名字如:home

      模板:

        {% url 'app01:名字' %}    名字如:home

相關文章
相關標籤/搜索