django ulr中配置name的作用

我们在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




    
    Title


计算4+4

此时点击计算跳转到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




    
    Title


计算4+4

这样改造之后,我们就可以随意修改我们的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/ 。

你可能感兴趣的:(django)