Django URL正则表达式“不是有效的正则表达式”错误

时间:2014-09-02 14:12:03

标签: python regex django

我在配置以下网址时遇到了一些麻烦。我希望它能够匹配一个以类别开头的页面,然后用一个slug完成,例如:

/category1/post1/
/category2/post2/
/category3/post3/
/category1/post4/
/category2/post5/

我尝试了许多不同的方法但没有成功......我总是得到一个"不是一个有效的正则表达式"错误。 这就是我认为它应该起作用的方式:

url(r'^(?P<category1|category2|category3>[\w\-]+)/(?P<slug>[\w\-]+)/$', blog_post, name = 'blog_post'),

我对正则表达式相当新,并且正在努力学习,所以对这个问题的任何帮助都会有一个解释,我将不胜感激:)

1 个答案:

答案 0 :(得分:1)

你的模式不正确;你把替代值放在错误的地方。您将它们放在组的名称中:

(?P<category1|category2|category3>...)

将它们放在名称应匹配的部分中:

(?P<category>category1|category2|category3)

进行完整注册:

url(r'^(?P<category>category1|category2|category3)/(?P<slug>[\w\-]+)/$', blog_post, name='blog_post'),

我假设您的blog_post可调用类似于:

def blog_post(category, slug):