【问题标题】:Python Pyramid url replacement variable restrictionsPython Pyramid url 替换变量限制
【发布时间】:2016-10-19 00:18:32
【问题描述】:

我在 Pyramid 1.7 中开发并遇到一个有趣的场景,其中一些 URL 调度替换变量与路由匹配,而另一些则不匹配。这些变量是数字,从我在文档中可以看出,这可能不是最佳实践,甚至是不允许的:

http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/urldispatch.html

我的路线基本上定义为:

config.add_route("my_route", "/path/more_path/{num_var1}-{num_var2}-even_more_path")

我看到的有趣的事情是,如果 num_var1 = 1 且 num_var2 = 1,则路径解析得很好。如果 num_var1 = 100 和 num_var_2 = 100,它也可以很好地解决。但是,如果 num_var1 = 1 且 num_var2 = 100,则无法解析。这是出于某种原因我应该预料到的失败还是应该正确解决?

谢谢!

【问题讨论】:

  • 你忽略了var1的值。你还配置了其他路由吗? order in which routes are declared 在匹配时很重要。
  • 对不起,我把路线调整得更清楚了。虽然我有另一个替换变量,但它与这个问题无关。我确实配置了其他路线,但据我所知,我没有遇到任何冲突。每一个都是独一无二的,足以避开这一点。您说订单很重要也是对的,但我看到的奇怪之处在于重置价值本身很重要。正如我所提到的,如果值相同,我可以,但如果我的路线值不同,则金字塔错误。
  • 让我们看看其他路线。或者更好的是,一个完整的可重现示例。

标签: python pyramid


【解决方案1】:

我做了一个测试用例,通过你的例子很好。随意使用它,直到它重现您的问题,但在那之前我不知道如何提供帮助。

from pyramid.config import Configurator
from webtest import TestApp

config = Configurator()
config.add_route('my_route', '/path/more_path/{num_var1}-{num_var2}-even_more_path')
config.add_view(lambda r: 'hello', route_name='my_route', renderer='string')
app = config.make_wsgi_app()
test = TestApp(app)

test.get('/path/more_path/1-1-even_more_path')
test.get('/path/more_path/100-100-even_more_path')
test.get('/path/more_path/1-100-even_more_path')
test.get('/path/more_path/1-100')  # fails, missing extra path

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多