I’m using Django’s URLconf, the URL I will receive is /?code=authenticationcode
I want to match the URL using r'^\?code=(?P<code>.*)$' , but it doesn’t work.
Then I found out it is the problem of ‘?’.
Becuase I tried to match /aaa?aaa using r'aaa\?aaa' r'aaa\\?aaa' even r'aaa.*aaa' , all failed, but it works when it’s “+” or any other character.
How to match the ‘?’, is it special?
The reason
/aaa?aaawon’t match inside your URL is because a?begins a new GET query.So, the matchable part of the URL is only up to the first ‘aaa’. The remaining ‘?aaa’ is a new query string separated by the ‘?’ mark, containing a variable “aaa” being passed as a GET parameter.
What you can do here is encode the variable before it makes its way into the URL. The encoded form of
?is%3F.You should also not match a GET query such as
/?code=authenticationcodeusing regex at all. Instead, match your URL up to/usingr'^$'. Django will pass the variablecodeas a GET parameter to therequestobject, which you can obtain in your view usingrequest.GET.get('code').