1. 程式人生 > >Django-1-URL路由系統

Django-1-URL路由系統

一、分發地址

    在APP中建立urls.py檔案,將屬於該APP的url地址都寫入到這個檔案中,當程式收到使用者傳送的請求時,先在根目錄的urls.py檔案中查詢該地址屬於哪個APP,將這個請求分發到該APP中,然後在APP的url.py中找到具體資訊。

1 from django.urls import path,include #include就是分發函式
2     urlpatterns = [
3         path('1/',include(‘index.urls’))     #index是APP名字  
4 ]

 

二、帶變數的URL

    一個url地址可以代表多個不同頁面,需要用到變數,URL的變數型別有四種,分別是字串型別、整型、slug和uuid。其中預設是字串型別。

path('<year>/<int:month>/<slug:day>',``````)

    在URL中使用<>可以設定變數,在括號中以冒號分為兩個部分,冒號前為變數型別,不加則為字串型別,冒號後為變數名。

 

三、在URL中使用正則表示式

    在url中可以使用正則表示式來限制可變範圍,有兩種引入方式:

#
方法一 from django.urls import path,re_path urlpatterns = [ re_path('(?P<year>(\d+))',``````), ] #方法二 from django.urls import path from django.conf.urls import url urlpatterns = [ url(r'......',``````), #必須在url前加r ]

  注意:如果在URL中使用了正則,則URL末端必須加上斜槓或者其他字元,否則正則表示式就不會生效,輸入無限長的字串都可以正常訪問。

 

四、URL中設定引數

   1、引數name

  除了在URL中設定變數外,還可以為URL起別名,可以在html模板中使用:

path('hello/',views.index, name='myname')
<body>
    <a href="{% url 'myname' %}">click this<a>
</body>

    給URL起別名看似沒有必要,但是如果改變了URL的路徑,則需要修改所有html中用到該URL的地方,這個時候使用別名就可以省去這些麻煩。

    2、其他引數

  除了name引數外,還可以設定一種字典型別的引數,這種引數相當於為html模板定義變數並賦值,也只能在模板中使用。

path('hello',views.index,name='myname',{'change':'yes'})
<a href="{% url 'name' %}">{{ chang }}</a>    #這裡的{{change}}就會在頁面上顯示為yes