django的路由系统:url
在url文件中的常用配置:
Django 1.1版本
from django.conf.urls improt url
urlpatterns=[
url(r'^ 正则表达式 $',views视图,参数,别名),
]
Django 2.0版本以后
from django.urls improt path
urlpatterns=[
path('正则表达式',views视图,参数,别名),
]
分组:
在正则表达式中加( ) 如: url(r'^del_publisher/(\d+)', views.del_publisher),
有名分组:
在正则表达式中加( ?P<名字>) 如: url(r'^blog/(?P<year>\d{4})/[1-9]{2}/$', views.blog)
注意!!!
url命名和反向解析:
1,命名: 在别名位置写入name='名字'
如:url(r'^publisher_list/', views.publisher_list, name='publisher'),
使用:
不带参数:
1,在视图中使用(views.py文件);
from django.urls import reverse
reverse('名字') 备注:通过名字获得对应的路径
2,在模板中使用(HTML.py文件):
{% url '名字' %} 备注:通过名字获得对应的路径
带有参数(分组):
如: url(r'^blog/(\d{4})/([1-9]{2})/$', views.blog, name='blog')
1,在视图中使用:
from django.urls import reverse
revrese('名字',args=('参数','参数')) 备注:获得路径,并将参数改成自己输入的 args是一个元组,如果只有一个值需在参数后加逗号.
2,在模板中使用:
{% url '名字' '参数' '参数' %} 备注:参数可以有多个,用空格隔开
带有参数,并有命名分组:
如:
1,在视图中使用:
reverse('名字',kwargs={'命名':'参数','命名':'参数'})
也可以用: revrese('名字',args=('参数','参数'))
2,在模板中使用:
{% url '名字' 命名='参数' 命名='参数'%}
命名空间模式: 即使不同的APP使用相同的url名称,也不会出错.
定义: url(r'^app01/$',include('app01.urls',namespace='app01')),
在app01中的url url(r'^home/$', views.home, name='home'),
使用:
视图:
reverse ('app01:名字') 名字如:home
模板:
{% url 'app01:名字' %} 名字如:home