django urls.py 中的name 使用方法


 

使用場景:

當我們在url的時候,一般情況下都是使用很明確的url地址。如在網頁里面使用<a href="/login">登錄</a>.像這樣的鏈接有很

多。假如有一天,突然需要改變登錄的鏈接,想將/login變成/login_first 這樣的話,就需要將url里面的正則改變成

^login_first/$,同時再將<a>標簽里面的href變成/login_first。像這樣<a>的鏈接太多了,根本就無法修改。

 

 

在template中使用name:

name--> url

所以這里就可以使用url里面自帶的name的方法。    對於像<a>這樣鏈接的操作。 用法: 不帶參數的: {% url 'name' %} 帶參數的:參數可以是變量名 {% url 'name' 參數 %}    所以這里的改變為:url('^login_first/$',views.login,name="login_first")(對於其他部分自動補腦),在<a href="{% url'login_first'%}">.    解釋:{% url 'login_first'%},這里的login_first代表着這個url自動去尋找django的url里面name="login_first"這個條鏈

接,並將前面的url賦給<a>標簽中的href。

 

 

在python中

name---> url 

這時如何讓以前的 /add/3/4/自動跳轉到新的網址呢?要知道Django不會幫你做這個,這個需要自己來寫一個跳轉方法。 這里需要我們使用reverse這個函數,作用:reverse 接收 url 中的 name 作為第一個參數

old的方法:url: url(r'^add/(\d+)/(\d+)/$', views.add2),

views:  from django.http import HttpResponseRedirect,HttpResponse  

           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

 

 

在python中

url---> name

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM