Django——路由層(路由配置,APPEND_SLASH,路由分發)

1、路由層之簡單路由配置

1 路由參數  
    # 第一個參數是正則表達式
    # 第二個參數是視圖函數內存地址
    # 第三個參數是個字典 {'name':lqz,'age':18},給視圖函數傳遞默認值
    # 第四個參數name,當前路由的別名,用做反向解析
    url(r'^home2/', views.home,{'name':'ayca','age':19},name='home'),
    
2 訪問根路徑,觸發視圖函數執行(路由怎麼配)
    -url(r'^$', admin.site.urls),

3 在路由中配置多個相同路由會怎麼樣?
    只會執行第一個

4 以下路由會怎麼樣?永遠不會匹配到第二個
    url(r'^login', views.home),
    url(r'^login2', views.home),

 

2、路由層之APPEND_SLASH

 

1 路由配置以下
    url(r'^login/$', views.home),
    訪問:http://127.0.0.1:8000/login/
    訪問:http://127.0.0.1:8000/login   兩次請求,重定向了一次
2 去掉這種特性,在settings.py中寫
    APPEND_SLASH=False  # 通常不加
    
3 django如何實現的?經過一箇中間件實現的django.middleware.common.CommonMiddleware(暫留)

 

 

 

3、路由分發

 

1 有一個總路徑,根路由,總路由負責作分發
2 每一個app有本身的路由和視圖函數的對應關係

3 使用:
    -1 在根路由中配置
        # 路由分發
        # 第一種方式
        # url(r'^app01',include('app01.urls') ),
        # 第二種方式
        url(r'^app01',include(urls) ),
    -2 在不一樣app中新建urls.py
        urlpatterns = [
            url(r'login/', views.login),
            url(r'home/', views.home),
        ]
    -3 http://127.0.0.1:8000/app01/login/  先匹配app01,若是成功分發到app01的urls中繼續匹配

 

 

 

 

相關文章
相關標籤/搜索