6

次の方法で作成したい URL 文字列があります。

http://something.com/mainsite/key1/key2/key3/keyn

n が可変数の場合、URL マッピングでこのようなものを生成するにはどうすればよいですか?

それらのキーを取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

10

これを行うには、次の 2 つの方法があります。

  1. 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
    
  2. 独自のカスタム ルート コンバーターを登録します(詳細については、 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
    
于 2013-09-04T04:05:32.863 に答える