On 26-7-2012 16:45, Joe wrote: > Hey, I have a url regex like this which is keeping django extremely busy > (20secs to 1min to handle a request). On some urls it even crashes. > > my regex: > > url(r'^(?P<item_url>(\w+-?)*)/$', 'detail'),
Turn the * into a + and you'll see great improvements and I also think you don't want to match '//' as a valid URL part. Also, I think this example will satisfy your requirements in practice: url(r'^(?P<item_url>\w[\w-]+-/$', 'detail') The only difference is that dashes are allowed to follow each other. I can only think of one valid reason to not use the above URL and that is if "multiple dashes" are captured in another URL. Remember that URL patterns are not your validators. It's nice if you can prevent a view from being called by carefully constructing your URL patterns, but if parsing the regex takes longer then calling the view you loose performance instead. Also, validating if a URL contains two or more consecutive dashes is easily done in a view and does not even need regular expressions: def detail(request, item_url) : if '--' in item_url : raise 404 Even more improvements if you keep the urls lower case (or uppercase, but not mixed case) and use [a-z0-9_] instead of \w. -- Melvyn Sopacua -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.