一、
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),
二、路由层之APPEND_SLASH
1 路由配置如下 url(r'^login/$', views.home), 访问:http://127.0.0.1:8000/login/ 访问:http://127.0.0.1:8000/login 两次请求,重定向了一次
2 是否开启URL访问地址后面部位/跳转至带有/的路径的配置项 ?
Django settings.py配置文件中默认没有APPEND_SLASH这个参数,但 Django默认这个参数为APPEND_SLASH=True,其作用就是自动在网址结尾加'/'
如果要去掉这种特性,需要在settings.py中写
APPEND_SLASH=False #但是注意一般不要加这个
设置为False就是关闭URL访问地址后面不为/跳转至带有/的路径的配置项
3 django如何实现的?通过一个中间件实现的django.middleware.common.CommonMiddleware(暂留)
三、路由分发
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中继续匹配