路由基础
url(正则路径,视图函数地址,默认关键字参数,路由别名)
路由由上而下匹配,
""可以匹配任意路由
"^$"来匹配"/"
url("index/$",views.error)
url("index",views.index)
路由先从上到下匹配一次,匹配不上会自动添加/再匹配一次,故index匹配到index
如果想取消默认添加/
①注释掉settings.py MIDDLEWARE = [.middleware.common.CommonMiddleware]
②将APPEND_SLASH设置为False
有名无名分组
无名分组
路由端:
url(r"^login/(\d+)/$",views.login)
视图函数端:
def login(request,var)
有名分组
路由端:
url(r"^login/(?P<user>\d+)/(?P<pwd>\d+)/$",views.login)
视图函数端:
def login(request,user,pwd)
#注:有名无名不能混用
多app共存的路由分配
在主路由中有多个app,防止视图函数冲突
①视图函数命名加上项目名app01_login
②import app01,app02
url(r"^app01/login/$",app01.login)
③路由分发
1.在每一个应用中建立自身的urls.py文件,语法同主路由
2.在主路由进行分发
from django.conf.urls import include
urlpatterns = [
url(r'^app01/',include('app01.urls')),
url(r"^app02/",include('app02.urls'))
]
多app共存时模板冲突问题
多app共存时,可能存在相同的功能,转跳相同名称的html(模板),造成模板冲突
解决方法:
①模板名前面加上项目app01_login.html
②在根目录的templates下创建项目名相同的文件夹,render(request,"app_name/login.html")