【问题标题】:Flask: URLs w/ Variable parametersFlask:带有/变量参数的URL
【发布时间】:2013-09-03 22:08:05
【问题描述】:

我有一个 URL 字符串,我想通过以下方式构建:

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

如何在我的 URL 映射中生成这样的东西,其中 n 是一个变量数?

我如何获得这些钥匙?

谢谢

【问题讨论】:

    标签: python flask


    【解决方案1】:

    有两种方法可以做到这一点:

    1. 只需使用path route converter:

      @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. 注册您自己的custom route converter(详情请参阅Werkzeug's documentation):

      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
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 2018-06-09
      相关资源
      最近更新 更多