Django url参数和反向URL

时间:2012-12-18 17:48:11

标签: python django django-templates django-views django-urls

我的观点如下:

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

一个看起来像这样的网址:

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

现在当我访问/设置/我从url {'the_city':'gye'}中的dict上的值设置会话变量时得到适当的响应

现在,我想要做的是修改我的程序,以便我可以从另一个模板(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调用以尝试使其工作但是,我似乎无法弄明白。 我真的很感激一些指示。

2 个答案:

答案 0 :(得分:11)

如果您的网址(在urls.py中)有任何捕获组,您可以在url标记中传递相关参数。

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>

答案 1 :(得分:1)

结帐captured parameters。这样的事情可能有用:

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