【问题标题】:Django url slash matchingDjango url 斜杠匹配
【发布时间】:2018-02-07 12:01:19
【问题描述】:

我在以下应用中的 url 模式:

urlpatterns = [
    url(r'^show/(?P<arg1>[\w\d_\.]+)$', views.view_1),
    url(r'^show/(?P<arg1>[\w\d_\.]+)/(?P<arg2>[\w\d_\.]+)$', views.view_2),
    url(r'^show/(?P<arg1>[\w\d_\.]+)/(?P<arg2>[\w\d_\.]+)/(?P<arg3>[\w\d_\.]+)$', views.view_3),
]

网址:/show/in_arg1/in_arg2%2F_this_is_arg2 匹配 view_3 但我想让 url 匹配 view_2

我尝试更改 urlpatterns 之类的

urlpatterns = [
    url(r'^show/(?P<arg1>[\w\d_\.]+)$', views.view_1),
    url(r'^show/(?P<arg1>[\w\d_\.]+)/(?P<arg2>[\w\d_\.\/]+)$', views.view_2),
    url(r'^show/(?P<arg1>[\w\d_\.]+)/(?P<arg2>[\w\d_\.\/]+)/(?P<arg3>[\w\d_\.]+)$', views.view_3),
]

网址:/show/in_arg1/in_arg2%2F_this_is_arg2 效果很好

但 url /show/in_arg1/in_arg2/in_arg3 将匹配 view_2,而不是我想要的

似乎 django 在 url 匹配之前将 %2F 解码为 /

我可以让 django 在不解码 %2F 的情况下进行 url 匹配吗?

或者解决我的问题的方法

谢谢

【问题讨论】:

  • 在您的问题中添加regex 标签。

标签: python regex django


【解决方案1】:

\/in (?P&lt;arg2&gt;[\w\d_\.\/]+) 搞砸了你。他们甚至会匹配show/a//b! 试试这些:

urlpatterns = [
    url(r'^show/(?P<arg1>[\w\d_\.]+)$', views.view_1),
    url(r'^show/(?P<arg1>[\w\d_\.]+)/(?P<arg2>[\w\d_\.]+)$', views.view_2),
    url(r'^show/(?P<arg1>[\w\d_\.]+)/(?P<arg2>[\w\d_\.]+)/(?P<arg3>[\w\d_\.]+)$', views.view_3),
]

更精通正则表达式的人可能会进一步帮助您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2010-10-02
    • 2022-08-19
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多