regex - django occasionally throwing a NoReverseMatch -
i'm getting occasional error in django template rendering; sometimes noreversematch on following url:
url(r'^student-agreement/(?p<code>[\w:-]+)$', studentagreementview.as_view(), name='student-agreement'), the code argument created calling signing.dumps() on object id, creates string such 'mjexmg:1z0h6s:1h19sjho2ccalaugkiylvyylszi' - far can tell, should match regex provided. however, trying test like:
for in range(20) print reverse('student-agreement', kwargs={'code':signing.dumps(i)}) will throw noreversematch pretty quickly.
here sample traceback:
traceback (most recent call last): file "/home/vagrant/.virtualenvs/sis_esv_repo/local/lib/python2.7/site-packages/ipython/core/interactiveshell.py", line 2883, in run_code exec(code_obj, self.user_global_ns, self.user_ns) file "<ipython-input-58-f02835044aa6>", line 2, in <module> print reverse('student-agreement', kwargs={'code':signing.dumps(i)}) file "/home/vagrant/.virtualenvs/sis_esv_repo/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 551, in reverse return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) file "/home/vagrant/.virtualenvs/sis_esv_repo/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 468, in _reverse_with_prefix (lookup_view_s, args, kwargs, len(patterns), patterns)) noreversematch: reverse 'student-agreement' arguments '()' , keyword arguments '{'code': 'mg:1z0h9l:lthc7maaten7jbhrbiut-zbzt18'}' not found. 1 pattern(s) tried: ['school/student-agreement/(?p<code>[\\w:-_]+)$']
turns out regex using while running tests different 1 posted in question - hadn't reloaded instance, , using old regex had been using: (?p<code>[\w:-_]+). correct regex (?p<code>[\w:-]+) - :-_ makes regex match range : _ doesn't include hyphen itself. correct regex has hyphen @ end of set, treated hyphen character. since \w includes underscore, underscore not necessary, (?p<code>[\w:_-]+) correct regex.
thanks @fasouto pointing me in right direction!
Comments
Post a Comment