一尘不染

flask路径模式匹配顺序

flask

我有以下路线:

  1. //close
  2. //
    如果我向发出请求http://localhost:5000/example-poll-key/close,Flask将其匹配为模式2,将字符串“ close”分配给<participant_key>URL参数。如何使<poll_key>/close路线在<participant_key>路线之前匹配?

阅读 957

收藏
2020-04-07

共1个答案

一尘不染

我错过了match_compare_key

  1. 对于static端点:(True, -2, [(0, -6), (1, 200)])
  2. /<poll_key>/close:(True, -2, [(1, 100), (0, -5)])
  3. /<poll_key>/<participant_key>:(True, -2, [(1, 100), (1, 100)])

这意味着的static优先级高于其他优先级,并且close优先级高于<participant_key>

例:

from flask import Flask

app = Flask(__name__)
app.add_url_rule('/<poll_key>/close', 'close',
                 lambda **kwargs: 'close\t' + str(kwargs))
app.add_url_rule('/<poll_key>/<participant_key>', 'p_key',
                 lambda **kwargs: 'p_key\t' + str(kwargs))


client = app.test_client()

print client.get('/example-poll-key/close').data
print client.get('/example-poll-key/example-participant-key').data

输出:

close   {'poll_key': u'example-poll-key'}
p_key   {'participant_key': u'example-participant-key', 'poll_key': u'example-poll-key'}

看起来这是正确的行为。

2020-04-07