Django上的正则表达式不起作用

时间:2017-06-26 09:58:24

标签: python regex django

我对Django比较新,所以我正在做this tutorial,但我遇到了正则表达式的问题:

对于此视图

def viewArticle(request, month, year):
     text = "Displaying articles of : %s/%s"%(year, month)
     return HttpResponse(text)

我应该创建一个这样的网址

url(r'^articles/(\d{2})/(\d{4})', 'viewArticles', name='articles')

它完美无缺,例如当我输入http://.../articles/12/2014时,我得到了“显示文章:12/2014”,我应该这样做。

但是,稍后(在PDF的第27页),我建议将网址更改为:

url(r'^articles/(?P\d{2})/(?P\d{4})', 'viewArticles', name='articles'),

现在它不再起作用了。为什么会这样,我怎么能改变我的代码?谢谢你的任何建议!

1 个答案:

答案 0 :(得分:3)

教程说你可以在这里使用named capturing groups

  

(?P<name>...)
  与常规括号类似,但组匹配的子字符串可通过符号组名称​​ name 访问。组名必须是有效的Python标识符,并且每个组名只能在正则表达式中定义一次。符号组也是一个编号组,就像该组未被命名一样。

命名捕获组的正确声明为(?P<name>...)

url(r'^articles/(?P<month>\d{2})/(?P<year>\d{4})', 'viewArticles', name='articles')