次の方法で作成したい URL 文字列があります。
http://something.com/mainsite/key1/key2/key3/keyn
n が可変数の場合、URL マッピングでこのようなものを生成するにはどうすればよいですか?
それらのキーを取得するにはどうすればよいですか?
ありがとう
これを行うには、次の 2 つの方法があります。
path
ルートコンバーターを使用するだけです:
@app.route("/mainsite/<path:varargs>")
def api(varargs=None):
# for mainsite/key1/key2/key3/keyn
# `varargs` is a string contain the above
varargs = varargs.split("/")
# And now it is a list of strings
独自のカスタム ルート コンバーターを登録します(詳細については、 Werkzeug のドキュメントを参照してください)。
from werkzeug.routing import BaseConverter, ValidationError
class PathVarArgsConverter(BaseConverter):
"""Convert the remaining path segments to a list"""
def __init__(self, url_map):
super(PathVarArgsConverter, self).__init__(url_map)
self.regex = "(?:.*)"
def to_python(self, value):
return value.split(u"/")
def to_url(self, value):
return u"/".join(value)
app.url_map.converters['varargs'] = PathVarArgsConverter
次のように使用できます。
@app.route("/mainsite/<varargs:args>")
def api(args):
# args here is the list of path segments