我们在django配置访问url的时候,有个参数name,作用类似给url取一个别名,然后在tempaltes等中需要用到这个url的时候,直接使用别用,而不是url格式引用。这样的好处就是在url有变动的时候,只需要修改urls.py中的url的格式即可,不需要再去逐个修改html的url。
举个例子
urls中有个url为
url(r'^add/(\d+)/(\d+)/$', add2, name='add'),
views.py
def index(request):
return render(request,'home.html')
def add2(request,a,b):
c=int(a) + int(b)
return HttpResponse(str(c))
在home.html中 ,有个跳转指向该url
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/add/4/4/">计算4+4</a>
</body>
</html>
此时点击计算跳转到add/4/4这个url,并计算出结果.
假设有N个html都用到了这个链接。此时,某些原因导致我们要修改urls.py中的配置,变为
url(r'^new_add/(\d+)/(\d+)/$', add2, name='add'),
此时会导致所有html中的href都失效,需要我们一个个的去修改,这样就会非常麻烦。此时如果我们给这个url一个别名,在引用的时候,直接用别名,这样的话,无论我们怎么去修改url,只要别名没变,我们就不需要去一个个的修改了。所以我们就引入了name。
不带参数的:
{% url 'name' %}
带参数的:参数可以是变量名
{% url 'name' 参数 %}
这个时候,我们重新改造href
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="{% url 'add' 4 5 %}">计算4+4</a>
</body>
</html>
这样改造之后,我们就可以随意修改我们的url了。
tips:在配置href中的url的时候,记得url的格式前面是有"/"的,我在调试中,不小心漏了这个,导致的后果就是本来应该是 http://127.0.0.1:8000/new_add/4/5/ ,调试中 url一直显示为 http://127.0.0.1:8000/index/new_add/4/5/ 。