你能在与子模式(金字塔)相匹配的ajax路线中使用斜线('/')吗?

时间:2016-05-20 17:26:26

标签: javascript ajax routes pyramid

我正在玩ajax路线,似乎ajax路线匹配仅适用于第一个正斜杠'/'。除了第一个正斜杠之外的所有东西都会被忽略。

例如。

View.py

@view_config(name="a", renderer="json")
def server_viewtest_a(request):
    return {}

@view_config(name="a/b", renderer="json")
def server_viewtest_ab(request):
    return {}

test.js

$.get('a/b', function (result) {  
 });

以上ajax调用路由'a / b'与'server_viewtest_a'匹配,而不是'server_view_ab'。除了第一个正斜杠之外的所有东西都会被忽略。

是否可以在ajax呼叫路由中使用正斜杠?如果是这样,怎么样?

修改

为了澄清,如果我使用以下代码,我可以让它工作。但是,我想在@view_config中使用'name'而不是'route_name',因此我不必在__init__.py中使用“config.add_route()”定义每个路由。有没有办法只用“名字”来做?

__初始化__。PY

config.add_route('a', 'a')
config.add_route('a/b', 'a/b')

View.py

@view_config(route_name="a", renderer="json")
def server_viewtest_a(request):
    return {}

@view_config(route_name="a/b", renderer="json")
def server_viewtest_ab(request):
    return {}

1 个答案:

答案 0 :(得分:0)

您需要定义与模式a/b匹配的路线。我在Python代码中没有看到一个。

此外,我认为您遇到的是route declaration ordering的结果,其中第二个函数永远不会被评估。通常,您的路线应按最具体至最少的顺序声明。

假设您使用网址分配进行路由匹配而不是遍历,请参阅Adding View Configuration Using the @view_config Decoratorpyramid.view.view_config API documentation了解使用示例。