我正在使用Django的URLconf,我将收到的URL是 /?code=authenticationcode
我想使用匹配的URL r'^\?code=(?P<code>.*)$' ,但它不起作用。
然后我发现它是'?'的问题。
因为我试图匹配 /aaa?aaa 运用 r'aaa\?aaa' r'aaa\\?aaa' 甚至 r'aaa.*aaa' ,都失败了,但是当它是“+”或任何其他角色时它会起作用。
如何匹配'?',这是特别的吗?
.*)$' ,但它不起作用。然'/> .*)$' ,但它不起作用。然'/>
我正在使用Django的URLconf,我将收到的URL是 /?code=authenticationcode
我想使用匹配的URL r'^\?code=(?P<code>.*)$' ,但它不起作用。
然后我发现它是'?'的问题。
因为我试图匹配 /aaa?aaa 运用 r'aaa\?aaa' r'aaa\\?aaa' 甚至 r'aaa.*aaa' ,都失败了,但是当它是“+”或任何其他角色时它会起作用。
如何匹配'?',这是特别的吗?
>>> s="aaa?aaa"
>>> import re
>>> re.findall(r'aaa\?aaa', s)
['aaa?aaa']
原因 /aaa?aaa 在你的网址内不匹配是因为a ? 开始一个新的GET查询。
因此,URL的匹配部分仅限于第一个'aaa'。剩下的'?aaa'是新的 请求参数 由'?'分隔mark,包含作为GET参数传递的变量“aaa”。
你是什么 能够 这里做的是在变量进入URL之前对变量进行编码。编码形式 ? 是 %3F。
您也应该不匹配GET查询,例如 /?code=authenticationcode 完全使用正则表达式。相反,请将您的网址与 / 运用 r'^$'。 Django将传递变量 code 作为GET参数 request 对象,您可以在视图中使用 request.GET.get('code')。
你不被允许使用 ? 在URL中作为变量值。该 ? 表示有变量进来。
喜欢: http://www.example.com?variable=1&another_variable=2
更换或逃脱它。这里有点不错 文件。
Django的 urls.py 不解析查询字符串,因此无法获取此信息 urls.py 文件。
而是在您的视图中解析它:
def foo(request):
code = request.GET.get('code')
if code:
# do stuff
else:
# No code!
“如何匹配'?',这是特别的吗?” 是的,但您可以使用反斜杠正确地转义它。但是,我没有看到你在哪里占据了领先的正斜线。这个位只需要添加:
r'^/\?code=(?P<code>.*)$'
压制正则表达式元字符 []
>>> s
'/?code=authenticationcode'
>>> r=re.compile(r'^/[?]code=(.+)')
>>> m=r.match(s)
>>> m.groups()
('authenticationcode',)
>>> s="aaa?aaa"
>>> import re
>>> re.findall(r'aaa\?aaa', s)
['aaa?aaa']
原因 /aaa?aaa 在你的网址内不匹配是因为a ? 开始一个新的GET查询。
因此,URL的匹配部分仅限于第一个'aaa'。剩下的'?aaa'是新的 请求参数 由'?'分隔mark,包含作为GET参数传递的变量“aaa”。
你是什么 能够 这里做的是在变量进入URL之前对变量进行编码。编码形式 ? 是 %3F。
您也应该不匹配GET查询,例如 /?code=authenticationcode 完全使用正则表达式。相反,请将您的网址与 / 运用 r'^$'。 Django将传递变量 code 作为GET参数 request 对象,您可以在视图中使用 request.GET.get('code')。
你不被允许使用 ? 在URL中作为变量值。该 ? 表示有变量进来。
喜欢: http://www.example.com?variable=1&another_variable=2
更换或逃脱它。这里有点不错 文件。
Django的 urls.py 不解析查询字符串,因此无法获取此信息 urls.py 文件。
而是在您的视图中解析它:
def foo(request):
code = request.GET.get('code')
if code:
# do stuff
else:
# No code!
“如何匹配'?',这是特别的吗?” 是的,但您可以使用反斜杠正确地转义它。但是,我没有看到你在哪里占据了领先的正斜线。这个位只需要添加:
r'^/\?code=(?P<code>.*)$'
压制正则表达式元字符 []
>>> s
'/?code=authenticationcode'
>>> r=re.compile(r'^/[?]code=(.+)')
>>> m=r.match(s)
>>> m.groups()
('authenticationcode',)