我正在玩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 {}
答案 0 :(得分:0)
您需要定义与模式a/b
匹配的路线。我在Python代码中没有看到一个。
此外,我认为您遇到的是route declaration ordering的结果,其中第二个函数永远不会被评估。通常,您的路线应按最具体至最少的顺序声明。
假设您使用网址分配进行路由匹配而不是遍历,请参阅Adding View Configuration Using the @view_config Decorator和pyramid.view.view_config API documentation了解使用示例。