0

I have following HTML file

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

And these are my URLS

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'),                                 
)

When I try to select a champion I get following Error:

Reverse for 'guide_form' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['guides/guide_form/(?P\w+)/$']

When I change this line

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

To this

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

I don't get an Error but the wrong URL is called of course. I want to select a champion and want the champ to be delivered per url so a guide can be written about him in the guide form. Do you have any suggestion on how to solve my problem?

2 Answers 2

2

Almost there, you need:

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

Your url pattern has a keyword argument champion, and the value is the template variable {{ champion }}. The url tag understands the template context, so you don't need {{ }} around the variable; instead pass it in directly as an argument to the url tag.

Sign up to request clarification or add additional context in comments.

Comments

1

It should be like this

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.