1. 程式人生 > >django命名url與url反向解析

django命名url與url反向解析

1.urls.py路由中指定別名

2.views.py檢視檔案中匯入from django.shortcuts import render, redirect, reverse

3.也可從這裡匯入:from django.urls import  reverse

命名URL:

 普通命名 url(r'^class/$', views.class, name=’cla’ )

    分組命名 url(r'^class/([0-9]{4})/([0-9]{2})/$', views.class, name=’cla’ )

    命名分組 url(r'^class/(?P<x>[0-9]{4})/(?P<y>[0-9]{2})/$', views.class, name=’cla’ )

URL反向解析:

    在檢視函式中的語法:  views.py中匯入from django.urls import  reverse

        普通: redirect( reverse(‘cla’) )  # 會動態的感知cla

對應的url中正則的變化,並體現出來

        分組: redirect( reverse(‘cla’ , args=(‘6666’, ’88’) ) )  # 有參正則給的引數要符合正則規則

        命名: redirect( reverse(‘cla’ , kwargs={ ‘x’:‘6666’, ’y’: ’88’} ) )  # 同上

    html模板中的語法:

        普通

: {% url ‘cla’ %}  # url 後跟別名即可,會動態感知並替換

        分組: {% url ‘cla’ ‘6666’ ‘88’ %}  # 原理同上檢視中

        命名: {% url ‘cla’ x=‘6666’ y=‘88’ %}

. 專案中存在多個包,且包內別名有重複時:

      以下是專案目錄下的主路由語法, 其中namespace是固定寫法,不可變

      url(r'app02/', include('app02.urls',namespace='app02')),

      url(r'app01/',include('app01.urls',namespace='app01')),

以下是views.py中函式檢視內的語法:

reverse('app01:home',kwargs={'year':'2018','month':'10'})

reverse('app02:home',kwargs={'year':'2018','month':'10'})

以下是html頁面中的語法:

{% url 'app02:home' '2018' '10'  %}