Opened 8 years ago

Closed 8 years ago

#6934 closed (fixed)

django.core.urlresolvers.reverse fails sometimes.

Reported by: Sebastian Noack Owned by: Malcolm Tredinnick
Component: Core (Other) Version: master
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: UI/UX:

Description (last modified by Malcolm Tredinnick)

If you have a url pattern, containing...

  • nested groups
  • not-matching groups
  • look-ahead or look-behind groups

...django.core.urlresolvers.reverse will fail, because of following reasons:

  • To replace the groups re.sub with r'\(([^)]+)\)' is used, which matches only until the first ')', doesn't matter how much groups are nested.
  • All groups which are no named groups are assumed to be positional groups, regardless if they might be not-matching, look-ahead or look-behind groups.

Attachments (1)

support-for-more-flexible-url-regex-patterns.patch (2.6 KB) - added by Sebastian Noack 8 years ago.

Download all attachments as: .zip

Change History (5)

Changed 8 years ago by Sebastian Noack

comment:1 Changed 8 years ago by Malcolm Tredinnick

Description: modified (diff)
Needs documentation: unset
Needs tests: unset
Owner: changed from nobody to Malcolm Tredinnick
Patch needs improvement: set
Summary: [PATCH] django.core.urlresolvers.reverse fails sometimes.django.core.urlresolvers.reverse fails sometimes.
Triage Stage: UnreviewedAccepted

This is a dupe of #2977, amongst others. But I'll leave it open because the patch is an interesting approach. I really need to finish fixing this, so maybe this will get me motivated.

comment:2 Changed 8 years ago by Sebastian Noack

Component: HTTP handlingCore framework

comment:3 Changed 8 years ago by Sebastian Noack

This ticked is open and tagged as "Patch needs improvement" now over a month. Please can you tell me, what you don't like about my patch. So I can an acceptable patch for you. Thanks.

comment:4 Changed 8 years ago by Malcolm Tredinnick

Resolution: fixed
Status: newclosed

(In [8760]) A rewrite of the reverse URL parsing: the reverse() call and the "url" template tag.

This is fully backwards compatible, but it fixes a bunch of little bugs. Thanks
to SmileyChris and Ilya Semenov for some early patches in this area that were
incorporated into this change.

Fixed #2977, #4915, #6934, #7206.

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