2016-01-08 51 views
0

我是Python,Django 1.9和整体正则表达式的新手。所以我想urls.py正则表达式的Django URL问题

search/doc_name/language/?id 
  1. 其中doc_name内写这样的事情,允许任何名称/箱/长度等,像这样:'My Fave Doc 12'
  2. 那里的语言,让2字母像这样:'en'
  3. 其中id,允许只有号码

这是我有什么,能有人指出我哪里错了?

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

回答

2

doc_name不允许空格。如果需要,可在字符集中添加一个空格。确保你把它放在破折号前([\w -]+)。如果允许其他空格,则使用\s代替([\w\s-]+)。

而且语言将当前匹配任何偶数的信件量。删除+,只留下[a-z]{2}+表示重复一次或多次,默认情况下只匹配一次。

0

你真的应该避免有空格你的网址,我建议如下:

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')