### 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/ 了