我正在使用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',)