django urls映射

django项目中的urls配置文件中定义的urlpatterns是一个url实例类型的python列表,列表中的子项,通过django.conf.urls的url模块(url模块是一个实现正则表达式到python函数视图直接的映射的功能)实现通过正则匹配访问的url信息,匹配到后调用函数或子urlpatterns进行二次匹配。

urlpatterns

urlpatterns是一个url实例类型的python列表。
urlpatterns中的每个正则表达式匹配项,在第一次被访问的时候进行编译。

url函数

url(regex, view, kwargs=None, name=None)

  • regex:简单的正则表达式
  • view:view参数是一个视图函数或者as_view()(基于类的视图)的结果
  • kwargs:传递额外的参数给视图
  • name:url名称 (前后端混在一起的时候常用,与flask中的url_for函数名一样)

include

include(module,namespace=None,
  app_name=None
)

include(pattern_list)

include(
    (pattern_list,app_namespace),
    namespace=None
)

include(
    (pattern_list,app_namespace,instance_namespace)
)
  • module:导入一个urls的模块
urlpatterns = [
    url(r'^dashboard/', include("子app项目.urls")),
]
  • namespace:导入一个URL命名空间
    这块得先做个演示,正常简单的定义url是酱汁的,很多重复项
urlpatterns = [
    url(r'^user/login/',login),
    url(r'^user/logout/',logout),
    url(r'^user/changepass',changepass),
    url(r'^user/changewx',changewx),
    url(r'^user/changephone',changewx),
]

通过url命名空间来写
可以很明确的看到级别关系,这个可以持续嵌套

urlpatterns = [
    url(r'^user/',include([
        url(r'^login',login),
        url(r'^logout',logout),
        url(r'^changepass',changepass),
        ...
    ]))
]

  • app_name:app命名空间
  • pattern_list:可迭代的django.conf.urls.url()实例
  • app_namespace:应用的命名空间
  • instance_namespace:实例的命名空间

你可能感兴趣的:(django urls映射)