【问题标题】:Django url pattern to ignore extra charactersDjango url 模式忽略多余的字符
【发布时间】:2017-03-29 13:17:10
【问题描述】:

我有一个如下所示的 django 网址:

url(r'^update_status/field1/(?P<field1_id>.*)/field2/(?P<field2_id>.*)/$', 'update_status', name='update_status')

这会捕获两个网址,例如:

update_status/field1/0445df4d8e1c43ae9/field2/f12b6b5c98/mraid.js/

update_status/field1/0445df4d8e1c43ae9/field2/f12b6b5c98

我只想捕获第二个 url 。 django url 应该改什么?

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    您的正则表达式 (?P&lt;field_id&gt;.*) 捕获任何字符,包括 / 字符。您想将其限制为 field_ids 的格式,如下所示:(?P&lt;field1_id&gt;[0-9a-f]+)(与 field2_id 相同)。

    注意:我假设您的 id 仅包含十六进制字符。

    【讨论】:

    • (?P[0-9a-f]+) 应该做得更好。 [0-5] 用于十六进制。
    • 是的,+ 确保没有空 ID。我编辑了我的回复。但我不明白你的 [0-5] 评论。
    • 那是个错误。 [0-9a-f]+ 适用于十六进制。
    • 如何只忽略 / 字符,也就是说它应该忽略任何在广告 ID 中具有 / 的调用?
    • 好的,它通过将 (?P.*) 替换为 (?P[^/]+) 来工作。我的 field2 有 : 字符。
    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多