2012-12-18 73 views
3

我有一個看起來像這樣的觀點:Django的URL參數和反向URL

def selectCity(request, the_city): 
    request.session["ciudad"] = the_city 
    city = request.session["ciudad"] 
    return HttpResponse('Ciudad has been set' + ": " + city) 

而且看起來像這樣的URL:

url(r'^set/$', views.selectCity, {'the_city': 'gye'}, name='ciudad'), 

現在,當我訪問/設置/我得到的從網址{'the_city':'gye'}中的字典值設置的會話變量的適當響應

現在,我想要做的是修改我的程序,在我可以從不同的模板(index.html)調用'ciudad'url並設置適當的會話變量。

<div class="modal-body"> 
     <a tabindex="-1" href="{% url ciudad 'the_city':'uio' %}">Quito</a> 
     <br/> 
     <a tabindex="-1" href="{% url ciudad 'the_city':'gye' %}">Guayaquil</a> 
    </div> 

我試圖修改URL和意見,並以各種方式相反的URL調用,試圖得到這個: 所以我會利用反向URL匹配有一個額外的參數做這樣的事情叫它工作,但我似乎無法弄清楚。 我真的很感激一些指針。

回答

9

您可以通過相關參數中的URL標記,如果您的網址(以urls.py)有任何捕獲組。

url(r'^set/(?P<the_city>\w+)/$', views.selectCity, {'the_city': 'gye'}, name='ciudad'), 

然後在模板:

<a tabindex="-1" href="{% url ciudad the_city='gye' %}">Guayaquil</a> 
+0

啊,這是完美的,謝謝!一個簡單的問題,那\ w +部分或正則表達式是做什麼的? – edu222

+0

請參閱[這裏](http://docs.python.org/2/library/re.html),'\ w +'表示它匹配任何字母數字字符和下劃線;這相當於設置[a-zA-Z0-9_] –

+0

好吧,真棒,再次感謝。 – edu222

1

退房captured parameters。像這樣的東西可能會奏效:

url(r'^set/$', views.selectCity, {'the_city': 'gye'}, name='ciudad'), 
url(r'^set/(?P<the_city>\w+)/$', views.selectCity, name='ciudad'),