Django URL 正则表达式问题

Django URL issue with regular expressions

我是 Python、Django 1.9 和整体正则表达式的新手。所以我想在 urls.py

中写这样的东西
search/doc_name/language/?id
  1. 其中 doc_name,允许 any name/case/length 等,像这样:'My Fave Doc 12'
  2. where 语言,允许 两个字母 像这样:'en'
  3. 其中 id,只允许 数字

这就是我的,谁能指出我错在哪里?

url(r'^search/[\w-]+/[a-z]{2}+/(?P<id>[0-9]+)$', '....

doc_name 不允许 space。如果需要,请在字符集中添加一个 space。确保将它放在破折号 ([\w -]+) 之前。如果允许其他白色space,则使用\s代替([\w\s-]+)。

此外,该语言目前可以匹配任意数量的字母。删除 + 并仅保留 [a-z]{2}+表示重复一次或多次,默认只匹配一次。

你真的应该避免在你里面有空格URL,我建议如下:

url 格式: /search/<doc_name>/<id>/?lang=<language>

urls.py:

url(r'^search/(?P<doc_name>[\w]+)/(?P<id>[0-9]+)/$'), your_view)

views.py:

lang = request.GET.get('lang', 'en')
doc_name = request.POST.get('doc_name')
id = request.POST.get('id')