3

我正在尝试使用正则表达式将两个输入从 URL 获取到视图中。

我的 urls.py 行看起来像这样

(r'^blog/(?P<match>.+)/', 'blog.views.blog'),

这是我的观点

def blog(request, match):
    pieces = match.split('/')

但是,如果我的 URL 是“root.com/blog/user/3”,pieces则只返回[user].

为了pieces to return[user],[3]` 必须在我的 URL 中添加一个斜杠:“root.com/blog/user/3/”

据我所知,根据我的 Python shell,第一个 URL 应该已经返回[user],[3]

我错过了什么吗?或者 Django 是否真的以与 Python 不同的方式分割字符串?

4

1 回答 1

3

问题是您的正则表达式与整个 URL 不匹配,因为该模式以斜杠结尾,而您的 URL 不匹配。

但是由于$末尾没有显式的正则表达式匹配字符串的前缀,如果您查看match变量,您会发现它是user/,而不是user/3您所期望的。

更新:(更详细的解释)

r'^blog/.*/'匹配[blog/user/][blog/user/]3(方括号用于表示实际匹配的部分)。

如果您尝试r'^blog/.*/$',您会发现blog/user/3根本不匹配,因为末尾没有斜线。

于 2013-05-30T19:04:27.577 回答