match an alternative url – regular expression django urls

Tags: , , ,



I want a Django URL with just 2 alternatives /module/in/ or /module/out/

I’m using

url(r'^(?P<status>w+[in|out])/$', 
'by_status', 
name='module_by-status'),

But it matches other patterns like /module/i/, /module/n/ and /module/ou/.

Any hint is appreciated :)

Answer

Try r'^(?P<status>in|out)/$'

You need to remove w+, which matches one or more alphanumeric characters or underscores. The regular expression suggested in bstpierre’s answer, '^(?P<status>w+(in|out))/$' will match helloin, good_byeout and so on.

Note that if you use the vertical bar (pipe) character | in your url patterns, Django cannot reverse the regular expression. If you need to use the url tag in your templates, you would need to write two url patterns, one for in and one for out.



Source: stackoverflow