我正在尝试使用正则表达式将URL中的两个输入添加到视图中。
我的urls.py行看起来像这样
(r'^blog/(?P<match>.+)/', 'blog.views.blog'),
这是我的观点
def blog(request, match):
pieces = match.split('/')
但是,如果我的网址是“root.com/blog/user/3”pieces
,则只返回[user]
。
为了pieces to return
[user],[3]`必须在我的网址中添加一个尾部斜杠:“root.com/blog/user/3/”
据我所知,根据我的Python shell,第一个网址应该已经返回[user],[3]
我错过了什么吗?或者Django实际上是否将字符串与Python分开?
答案 0 :(得分:3)
问题是你的正则表达式与整个网址不匹配,因为模式以斜杠结尾,而你的网址没有。
但是,由于最后没有明确$
的正则表达式匹配字符串的前缀,如果你看一下你的match
变量,你会注意到它是user/
,而不是您所期望的user/3
。
更新 :(更详细的解释)
r'^blog/.*/'
匹配[blog/user/]
和[blog/user/]3
(方括号用于表示实际匹配的部分)。
如果您尝试r'^blog/.*/$'
,您会注意到blog/user/3
根本不匹配,因为最后没有斜线。