花了好长时间才明白这个name参数的含义。便写下来了备忘html
当咱们在url的时候,通常状况下都是使用很明确的url地址。如在网页里面使用<a href="/login">登陆</a>.像这样的连接有很django
多。假若有一天,忽然须要改变登陆的连接,想将/login变成/login_first 这样的话,就须要将url里面的正则改变成函数
^login_first/$,同事再将<a>标签里面的href变成/login_first。像这样<a>的连接太多了,根本就没法修改。因此这里就能够url
使用url里面自带的name的方法。 对于像<a>这样连接的操做。 用法: 不带参数的: {% url 'name' %} 带参数的:参数能够是变量名 {% url 'name' 参数 %} 因此这里的改变为:url('^login_first/$',views.login,name="login_first")(对于其余部分自动补脑),在<a href="{% urlspa
'login_first'%}">. 解释:{% url 'login_first'%},这里的login_first表明着这个url自动去寻找django的url里面name="login_first"这个条链htm
接,并将前面的url赋给<a>标签中的href。import
这时如何让之前的 /add/3/4/自动跳转到新的网址呢?要知道Django不会帮你作这个,这个须要本身来写一个跳转方法。 这里须要咱们使用reverse这个函数,做用:reverse 接收 url 中的 name 做为第一个参数登录
old的方法:url: url(r'^add/(\d+)/(\d+)/$', views.add2),变量
views: from django.http import HttpResponseRedirect,HttpResponse request
from django.core.urlresolvers import reverse
def add2(request,a,b):
c=int(a)+int(b)
return HttpResponse(str(c))
new方法:
url(r'^add/(\d+)/(\d+)/$', views.add2_redirect),
url(r'^new_add/(\d+)/(\d+)/$', views.add2, name='add2'),
views:
from django.http import HttpResponseRedirect,HttpResponse
from django.core.urlresolvers import reverse
##新添的函数
def add2_redirect(request, a, b):
return Redirect(reverse('add2', args=(a, b))
def add2(request,a,b):
c=int(a)+int(b)
return HttpResponse(str(c))
本来咱们访问127.0.0.1/add/3/4/ 会获得7 如今的话,咱们访问127.0.0.1/add/3/4/会获得新的连接/127.0.0.1/new_add/3/4/,而且新的连接的内容也是7
解释:reverse的第一个参数为add2,那么它就会到url取新的连接,为new_add/,再加上后面的参数,就成为/new_add/3/4,而且使用add2的函数,获得想要的值。
参考:http://www.ziqiangxuetang.com/django/django-url-name.html