【问题标题】:Use end of URL as variable, without it being a GET parameter?使用 URL 的结尾作为变量,而不是 GET 参数?
【发布时间】:2014-11-14 10:18:10
【问题描述】:

我有一些匹配的网址:

(r'foo/[1-9]?[0-9]/?', Foo)

我反对让他们成为例如mydomain.tld/foo?n=84 只是因为我认为没有 GET 参数的永久链接是一种很好的规范(?)风格。

我目前正在做:

class Handler(webapp2.RequestHandler):
    #...
    def currentURL(self):
        return self.request.path_qs

class Foo(Handler):
    def get(self):
        n = re.match(r'.+/([1-9]?[0-9])/?', self.currentURL()).group(1)
        #do something with n

但是有没有更干净、不那么老套的方法呢?

【问题讨论】:

  • webapp-improved.appspot.com/guide/routing.html ... 看看第一个代码块...(该块中的最后一个示例)
  • 您希望实际的 URL 是什么样的? http://mydomain.tld/foo/n/84?如果有多个参数,它们可以按任何顺序出现吗?仅显示您正在使用的正则表达式并不能向我们提供您想要的规则,如果它(您自己承认)很老套且模棱两可。
  • @JoranBeasley 哇哦,这是一个比我预期的更简洁的解决方案!如果您发布示例,我会接受答案。
  • @abarnert 它们匹配上面的正则表达式,所以就像http://mydomain.tld/foo/84
  • @OllieFord:很多东西都符合上面的正则表达式。无论如何,您真的想匹配以数字结尾的任何内容,并将该数字视为某些特定 API 的 n 参数?

标签: python google-app-engine wsgi webapp2


【解决方案1】:

来自https://webapp-improved.appspot.com/guide/routing.html ...我认为以下内容会起作用

(r'foo/([1-9]?[0-9])/?', Foo)

然后

class Foo(Handler):
    def get(self,n):
        print n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多