【问题标题】:Django url regular expression is not getting matchedDjango url 正则表达式未匹配
【发布时间】:2014-01-31 22:31:00
【问题描述】:

我需要匹配 url 中的 url 编码空格,即 %20。

我的网址会是这样的

http://domain/something/hello%20world

这是我的 url 配置和视图

url(r'^regtest/(\w+[%20]?\w+)', views.regView)

查看:

   def regView(request, x, y=None):                                      
    print x, 'and', y                                              
    return HttpResponse('+OK')  

这是我从 url 获得点击时的日志

http://127.0.0.1:8000/regtest/hello%20world

hello and None
[13/Jan/2014 02:12:31] "GET /regtest/hello%20world HTTP/1.1" 200 3

【问题讨论】:

    标签: regex django django-urls


    【解决方案1】:

    模式 [%20] 匹配 %20

    使用以下正则表达式代替匹配单词字符 (\w) 或 (|)、%20

    r'^regtest/((?:\w|%20)+)'
    

    >>> import re
    >>> matched = re.search(r'regtest/((?:\w|%20)+)', 'regtest/hello%20world')
    >>> matched.group(1)
    'hello%20world'
    

    更新

    %20 被 Django 解释并解码为一个空格 ()。所以你应该匹配空格而不是%20

    r'^regtest/([\w\s]+)'
    

    【讨论】:

    • 当我在 url conf 中使用它时,它甚至没有得到匹配。我确实交叉检查了那个,
    • 我也尝试了以下正则表达式。 (\w+(%20)?\w+)
    猜你喜欢
    • 2011-08-17
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多