我使用python和django来匹配我网站的网址。我需要匹配一个看起来像这样的网址: /公司/代码/?代码= 34k3593d39k
之后的部分?code =是字母和数字的任意组合,以及任何长度。
到目前为止我已尝试过这个:
r'^company/code/(.+)/$'
r'^company/code/(\w+)/$'
r'^company/code/(\D+)/$'
r'^company/code/(.*)/$'
但到目前为止,没有人能够抓住这个表达方式。有任何想法吗?感谢
答案 0 :(得分:2)
code=34k3593d39k
是GET
参数,您无需在网址格式中为其定义模式。您可以在视图下使用request.GET.get('code')
访问它。模式应该只是:
r'^company/code/$'
用法,访问GET参数:
def my_view(request):
code = request.GET.get('code')
print code
URLconf搜索请求的URL,作为普通的Python 串。这不包括GET或POST参数或域 名。
答案 1 :(得分:1)
如果您将最后一个/
移到^
之后,第一个模式将有效:
>>> import re
>>> re.match(r'^/company/code/(.+)$', '/company/code/?code=34k3593d39k')
<_sre.SRE_Match object at 0x0209C4A0>
>>> re.match(r'^/company/code/(.+)$', '/company/code/?code=34k3593d39k').groups()
('?code=34k3593d39k',)
>>>
另请注意^
是不必要的,因为re.match
匹配字符串的开头:
>>> re.match(r'/company/code/(.+)$', '/company/code/?code=34k3593d39k').groups()
('?code=34k3593d39k',)
>>>