Opened 10 years ago

Closed 9 years ago

#3525 closed (fixed)

{% url path.to.view %} fails with multiple patterns for the same function

Reported by: omat@… Owned by: nobody
Component: Template system Version: master
Severity: Keywords: url, template
Cc: django@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description (last modified by Malcolm Tredinnick)

If there are multiple patterns matching the same view function, it seems like, only the first match is considered.

Lets say a function has an optional "id" parameter which defaults to None and below is the patterns pointing that function.

(r'^(?P<slug>[-\w]+)/$', views.myfunc),

(r'^(?P<slug>[-\w]+)/(?P<id>\d+)/$', views.myfunc),

In that case,

{% url views.myfunc slug=something,id=someint %}

fails to match anything, where we can expect it to match the second
pattern and return "/something/someint/"

Change History (5)

comment:1 Changed 10 years ago by Gary Wilson <gary.wilson@…>

Triage Stage: UnreviewedDesign decision needed

comment:2 Changed 10 years ago by Malcolm Tredinnick

Description: modified (diff)
Owner: changed from Adrian Holovaty to Malcolm Tredinnick
Status: newassigned

Yep. A bug.

comment:3 Changed 10 years ago by Malcolm Tredinnick

Triage Stage: Design decision neededAccepted

oops... clicked the wrong box. Meant to change it to "accepted" not take assignment. Ah well ... I'm not working on this one, folks, so somebody else should feel free. :-)

comment:4 Changed 10 years ago by anonymous

Cc: django@… added

comment:5 Changed 9 years ago by James Bennett

Resolution: fixed
Status: assignedclosed

This was fixed by the introduction of named URL patterns, which provide a way to differentiate multiple patterns using the same view function.

Note: See TracTickets for help on using tickets.
Back to Top