from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图,参数,别名), ]
正则表达式: 正则字符串,匹配路径正则表达式
views视图: 视图中的函数django
参数: 可选,要传递给视图函数的默认参数,字典形式app
别名: 可选, name参数函数
r'' 开头url
最开始的/不用加spa
从上到下匹配,匹配成功就再也不继续code
Django settings.py配置文件中默认没有 APPEND_SLASH 这个参数,但 Django 默认这个参数为 APPEND_SLASH = True。 其做用就是自动在网址结尾加'/'。blog
路由
字符串
经过括号对正则表达式进行分组匹配,捕获URL中的值而且以位置参数的形式传给视图,在视图函数里定义相应个数的形参就能够
例: url(r'^blog/([0-9]{4})/([0-9]{2})/', views.blog,name='blog')
命名分组匹配的正则表达式来捕获URL中的值而且以关键字参数的形式传给视图,视图函数中必须使用和name相同的形参
URLconf 在请求的URL上查找,捕获的永远都是字符串,不包括GET和POST参数以及域名,全部的请求方法都将路由到相同的函数
# urls from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^blog/$', views.page), url(r'^blog/page(?P<num>[0-9]+)/$', views.page), ] # views函数中,能够为num指定默认值 def page(request, num="1"): pass
在urls文件中,能够包含其余的URLconfs文件(有多个app文件,能够看作一级目录,二级目录)
from django.conf.urls import include, url urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', include('app02')), # 能够包含其余的URLconfs文件 ]
给URL匹配规则定义别名,经过名字来调用当前的URL
命名
url(r'^home', views.home, name='home'), # 给url匹配模式起名为home
使用
# 在模板中使用 {% url 'home' %} # 返回一个完成的url # 在py文件中使用(views文件) from django.urls import reverse reverse('home')
命名
url(r'^blog/([0-9]{4})/([0-9]{2})/$', views.blog,name='blog' )
使用
# 在模板中使用 {% url 'blog' '2019' '04' %} 位置参数传参 -----/blog/2019/04
# 在py文件中使用(views文件) from django.urls import reverse reverse('blog',args=('2019','04')) -----/blog/2019/04
命名
url(r'^blog/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.blog,name='blog' )
使用
# 在模板中使用 {% url 'blog' '2019' '04' %} 能够按照和分组同样的形式进行传参 {% url 'blog' year='2019' month='04' %} 按照关键字参数的形式进行传参 # 在py文件中使用(views文件) from django.urls import reverse reverse('blog',args=('2019','04')) 按照位置参数的形式进行传参 reverse('blog',kwargs={year:'2019',month:'04'}) 按照关键字参数的形式进行传参
在不一样的app文件中,可能会出现url名称重复的现象,能够使用namespace,翻转URL时经过命名空间的名称获得当前的URL
例: 在app01和app02的url文件中,都有detail名称
from django.conf.urls import url, include urlpatterns = [ url(r'^app01/', include('app01.urls', namespace='app01')), url(r'^app02/', include('app02.urls', namespace='app02')), ]
使用
# 在模板中使用 {% url 'app01:detail' pk=12 pp=99 %} # 在py文件中使用 reverse('app01:detail', kwargs={'pk':11})