合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
### name 对URL的路由关系进行命名,方便在`视图函数`和`模板`中生成想要的URL。 urls.py ~~~ url(r'^url1/', views.index1, name='u1') url(r'^url2/(\d+)/(\d+)/', views.index2, name='u2') url(r'^url1/(?<nid>\d+)/(?<uid>\d+)/', views.index3, name='u3') ~~~ views.py ~~~ from django.urls import reverse url1 = reverse('u1') # -> url1 url2 = reverse('u2', args=(1, 2)) # -> url2/1/2/ url1 = reverse('u1', kwargs={'nid': 1, 'uid': 2}) # -> url3/1/2/ ~~~ templates ~~~ {% url 'u1' %} # -> url1 {% url 'u2' 1 2 %} # -> url2/1/2/ {% url 'u3' nid=1 uid=2 %} # -> url3/1/2/ ~~~ --- ### 链接跳转 另外,比如用户收藏夹中收藏的URL是旧的,如何让以前的 /add/3/4/自动跳转到现在新的网址呢? 要知道Django不会帮你做这个,这个需要自己来写一个跳转方法, [demo下载][2] 具体思路是,在 views.py 写一个跳转的函数 ``` from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse # django 1.4.x - django 1.10.x # from django.urls import reverse # new in django 1.10.x def old_add_redirect(request, a, b): return HttpResponseRedirect( reverse('add', args=(a, b)) ) ``` urls.py中 ``` url(r'^add/(\d+)/(\d+)/$', learn_views.old_add_redirect), url(r'^new_add/(\d+)/(\d+)/$', learn_views.add, name='add2'), ``` 这样,假如用户收藏夹中有 /add/4/5/ ,访问时就会自动跳转到新的 /new_add/4/5/ 了