Django url获取带参数的请求

时间:2015-07-17 07:50:34

标签: django django-urls

我有 HTML 文件

<!DOCTYPE html>
<body>
  {% for champion in champions %}
    <a href="{% url 'guide_form' %}{{champion}}">{{champion}}</a>
  {% endfor %}
</body>
</html>

这些是我的网址

urlpatterns = patterns('',                                                                    url(r'^select_champion/$', views.select_champion, name='select_champion'),
  url(r'^guide_form/(?P<champion>\w+)/$', views.guide_form, name='guide_form'),
  url(r'^create_guide/$', views.create_guide, name='create_guide'),
  url(r'^get_guide/(?P<id>\d+)/$', views.get_guide, name='get_guide'),
  url(r'^guide_list/(?P<champion>\w+)/$', views.get_guide_list, name='get_guide_list'),                                 
)

当我尝试选择冠军时,我得到以下错误:

  

使用参数'()'和关键字参数反转'guide_form'   '{}' 未找到。尝试过1种模式:   [ '引导件/ guide_form /(ΔP\ W +)/ $']

当我更改此行

<a href="{% url 'guide_form' %}{{champion}}">{{champion}}</a>

到此

<a href="{% url 'create_guide' %}{{champion}}">{{champion}}</a>

我没有收到错误,但当然会调用错误的URL。我想选择一名冠军,并希望每个网址都能获得冠军,因此可以在指南表格中向他撰写关于他的指南。 您对如何解决我的问题有任何建议吗?

2 个答案:

答案 0 :(得分:2)

几乎就在那里,你需要:

<a href="{% url 'guide_form' champion=champion %}">{{ champion }}</a>

您的网址格式包含关键字参数champion,其值为模板变量{{ champion }}。 url标记了解模板上下文,因此您不需要围绕变量{{ }};而是直接将其作为参数传递给url标记。

答案 1 :(得分:1)

应该是这样的

<!DOCTYPE html>
<body>
  {% for champion in champions %}
    <a href="{% url 'guide_form' champion %} ">{{champion}}</a>
  {% endfor %}
</body>
</html>