Python Pyramid Url 路由
在MVC架构出现之前,Web应用程序使用将用户在浏览器中输入的URL映射到一个程序文件的机制,该文件的输出将作为HTML呈现给浏览器作为响应返回。Pyramid框架使用路由机制,其中URL的终点与应用程序注册表中注册的不同URL模式匹配,调用其映射的视图并渲染响应。
一个典型的URL由三个部分组成:协议(例如http://或https://)后跟IP地址或主机名。主机名后的第一个/后的URL的剩余部分称为路径或终点。
终点加上一个或多个变量部分形成了路由。变量部分的标识符使用花括号括起来。例如,对于上述URL,路由是 /blog/{id}
WSGI应用程序充当路由器。它会将传入的请求与路由图中的URL模式进行匹配。如果找到匹配项,将执行与之关联的视图,并返回响应。
路由配置
可以通过调用Configurator对象的add_route()方法来向应用程序添加新路由。路由具有一个名称,该名称用作用于URL生成的标识符,以及一个用于匹配URL的PATH_INFO部分的模式(即在方案和端口之后的部分,例如URL中的/blog/1)。 http://example.com/blog/1)。
如前所述,add_route()方法的模式参数可以具有一个或多个由花括号括起来并由/分隔的占位符标识符。以下语句将’index’分配为给定模式’/{name}/{age}’的路由名称。
将视图调用与该路由关联,我们使用add_view()函数,如下所示-
要使路由与index()函数匹配,该函数必须可用。
示例
我们将以下语句放在下面的程序中 –
输出
运行上面的代码并访问 http://localhost:6543/Ravi/21 在浏览器中。由于URL的PATH_INFO与索引路由匹配,将显示以下输出:
路由配置中使用的模式通常以斜杠(/)字符开头。模式段落(模式中/字符之间的单个项目)可以是一个字面字符串,也可以是一个占位符标记(例如,{name}),或者两者的某种组合。替代标记不需要在之前加上/字符。
下面是一些路由模式的例子
占位符标识符必须是一个有效的Python标识符。因此,它必须以大写或小写的ASCII字母或下划线开头,并且只能包含大写或小写的ASCII字母,下划线和数字。
路由匹配
当传入的请求与特定路由配置相关联的URL模式匹配时,一个名为 matchdict 的字典对象将作为请求对象的属性添加上去。
request.matchdict 包含与模式元素中的替换模式匹配的值。matchdict中的键是字符串,而其值是Unicode对象。
在前面的例子中,将index()视图函数更改为如下:
浏览器以字典对象的形式展示路径参数。
当请求匹配路由模式时,传递给视图函数的请求对象还包括一个 matched_route 属性。可以通过其name属性获取匹配路由的名称。
示例
在下面的示例中,我们使用@view.config()装饰器定义了两个视图函数student_view()和book_view()。
应用程序的注册表被配置为具有两个相应的路由- ‘student’映射到 ‘/student/{name}/{age}’ 模式,’book’映射到 ‘/book/{title}/{price}’ 模式。我们调用 configurator 对象的scan()方法来添加这些视图。
输出
当浏览器输入 http://localhost:6543/student/Ravi/21 的URL时,输出为
如果输入的URL是 http://localhost:6543/book/Python/300 ,输出为