[Fixed]-How to specify long url patterns using Regex so that they follow PEP8 guidelines

29👍

Adjacent strings are concatenated, so you can do something like this:

url(r'^(?i)top-dir/(?P<first_slug>[-\w]+?)/'
    r'(?P<second_slug>[-\w]+?)/'
    r'(?P<third_slug>[-\w]+?).html/$',
    'apps.Discussion.views.pricing',)

-2👍

PEP8 has no regex formatting tips. But try these:

  • use re.compile and have these benefits
    • quicker to match/search on them
    • reference them under a (short) name!
  • write the regex multiline with (white)spaces
    • use re.VERBOSE to ignore whitespace in the regex string
    • use flags instead of “magic groups” ((?i) → re.IGNORECASE)

 

slugs = re.compile(r'''
    ^
    top-dir/
    (?P<first_slug>[-\w]+?)/
    (?P<second_slug>[-\w]+?)/
    (?P<third_slug>[-\w]+?).html/
    $
        ''', re.VERBOSE|re.IGNORECASE)

url(slugs, 'apps.Discussion.views.pricing', ...)

Leave a comment