django 命名空間詳解

include(module[, namespace=None, app_name=None ])
include(pattern_list)
include((pattern_list, app_namespace, instance_namespace))django

 

app_namespace即爲application namespace,instance_namespace即爲instance namespace app

django分爲application namespaceinstance namespace 兩種spa

帶有命名空間的URL組成方式爲」admin:index」,以 : 爲分隔符,命名空間URL支持嵌套,例如:」foo:bar:whiz」io

解析命名空間URL過程:module

前提:假設有一個命名空間URL「myapp:index」被解析。渲染

1.django查找符合條件(此例中爲myapp)的application namespace,會返回一個符合條件的instance namespace列表命名空間

2.若是有 current application instance被定義,換句話說就是,用於渲染的模版中的Context或者是RequestContext中的current_app這個屬性被設置,則這個值就是current application instance,使用該instance命名

3.若是沒有 current application instance被定義,會查找一個default application instance,這個instance namespace的名字與application namespace的名稱同樣。模版

4.若是沒有default  application instance,則會按照聲明次序,返回最後一個被聲明的instance namespaceindex

5.若是第一步沒有匹配條件的application namespace,django會直接去查找匹配的instance命名空間。

相關文章
相關標籤/搜索