pyramid.view¶
- render_view_to_response(context, request, name='', secure=True)[源代码]¶
打电话给 view callable 配置了 view configuration 与 view name
name针对指定的context和request并返回 response 对象。此函数将返回None如果一个对应的 view callable 找不到(如果没有 view configuration 匹配的组合name/context和/和request)如果 secure 是
True和 view callable 找到的受权限保护,将在调用视图函数之前检查权限。如果权限检查不允许执行视图(基于当前 authorization policy a)pyramid.httpexceptions.HTTPForbidden将引发异常。例外情况args属性解释为什么不允许视图访问。如果
secure是False,未执行权限检查。
- render_view_to_iterable(context, request, name='', secure=True)[源代码]¶
打电话给 view callable 配置了 view configuration 与 view name
name针对指定的context和request并返回表示响应主体的不可重复对象。此函数将返回None如果一个对应的 view callable 找不到(如果没有 view configuration 匹配的组合name/context和/和request)此外,此函数将引发ValueError如果找到并调用了视图函数,但视图函数的结果没有app_iter属性。通常可以通过调用
b''.join(iterable)或只是使用pyramid.view.render_view()相反。如果
secure是True,并且视图受权限保护,则在调用视图函数之前会检查权限。如果权限检查不允许视图执行(基于当前 security policy ),apyramid.httpexceptions.HTTPForbidden异常将被引发;其args属性解释不允许视图访问的原因。如果
secure是False,未执行权限检查。
- render_view(context, request, name='', secure=True)[源代码]¶
打电话给 view callable 配置了 view configuration 与 view name
name针对指定的context和request并展开视图响应app_iter(见 查看可调用响应 )变成一个字节串。此函数将返回None如果一个对应的 view callable 找不到(如果没有 view configuration 匹配的组合name/context和/和request)此外,此函数将引发ValueError如果找到并调用了视图函数,但视图函数的结果没有app_iter属性。此函数将返回None如果找不到相应的视图。如果
secure是True,并且该视图受权限保护,在调用该视图之前将检查该权限。如果权限检查不允许执行视图(基于当前 authorization policy a)pyramid.httpexceptions.HTTPForbidden将引发异常;其args属性解释为什么不允许视图访问。如果
secure是False,未执行权限检查。
- class view_config(**settings)[源代码]¶
函数、类或方法 decorator 它允许开发人员创建更接近 view callable 定义而非使用 imperative configuration 做同样的事情。
例如,模块中的此代码
views.py::from resources import MyResource @view_config(name='my_view', context=MyResource, permission='read', route_name='site1') def my_view(context, request): return 'OK'
可能会将以下调用替换为
pyramid.config.Configurator.add_view()方法:import views from resources import MyResource config.add_view(views.my_view, context=MyResource, name='my_view', permission='read', route_name='site1')
pyramid.view.view_config支持以下关键字参数:context,exception,permission,name,request_type,route_name,request_method,request_param,containment,xhr,accept,header,path_info,custom_predicates,decorator,mapper,http_cache,require_csrf,match_param,physical_path,以及view_options。这些参数的含义与传递给
pyramid.config.Configurator.add_view(). 如果遗漏任何参数,则其默认值将是等效的add_view违约。将传递给 venusian
attach函数是_depth和_category._depth是为希望从另一个装饰器重用此类的人提供的。默认值为0并且应该相对于view_config调用。它将传递给 venusianattach当Venusian检查装饰器是否在类或模块上下文中使用时,函数作为调用堆栈的深度。它不常用,但在这种情况下可能有用。_category设置装饰器类别名称。它可以与category的参数scan控制应处理哪些视图。见
venusian.attach()在金星函数中获取更多关于_depth和_category参数。参见
也见 使用添加视图配置 @view_config 装饰者 有关使用的详细信息
pyramid.view.view_config.备注
因为
venusian.Scanner.scan,注意view_config仅在以下情况下有效。在Python包中
__init__.py在他们的目录中。参见
另请参见https://github.com/Pylons/venusian/issues/68
模块顶层成员。
Python源代码 (
.py)文件。编译的Python文件 (.pyc,.pyo)没有相应的源文件将被忽略。
参见
- view_defaults(**settings)[源代码]¶
一个班 decorator 当应用于某个类时,它将为使用该类的所有视图配置提供默认值。此修饰符接受
pyramid.view.view_config(),每个都有相同的含义。见 @view_defaults 班级装饰师 更多信息。
- class notfound_view_config(**settings)[源代码]¶
在 1.3 版本加入.
类似物
pyramid.view.view_config注册了一个 Not Found View 使用pyramid.config.Configurator.add_notfound_view().这个
notfound_view_config构造函数接受大多数与的构造函数相同的参数pyramid.view.view_config. 它可以在相同的地方使用,并且基本上以相同的方式运行,除非它总是注册一个未找到的异常视图,而不是一个“正常”视图。例子:
from pyramid.view import notfound_view_config from pyramid.response import Response @notfound_view_config() def notfound(request): return Response('Not found!', status='404 Not Found')
所有参数,除了
append_slash含义与pyramid.view.view_config()而每个谓词参数都限制了调用NotFound视图的环境集。如果
append_slash是True,当调用未找到视图,并且当前路径信息没有以斜线结尾时,NotFound逻辑将尝试查找 route 匹配请求的路径信息,并用斜杠后缀。如果存在这样的路由,Pyramid将发出一个重定向到路由所隐含的URL;如果不存在,Pyramid将返回可调用视图的结果,如view,正常情况下。如果提供的参数为
append_slash不是布尔值,而是实现IResponse,追加斜杠逻辑的行为将类似于append_slash=True已传递,但提供的类将用作响应类,而不是默认的HTTPTemporaryRedirect执行重定向时的响应类。例如:from pyramid.httpexceptions import ( HTTPMovedPermanently, HTTPNotFound ) @notfound_view_config(append_slash=HTTPMovedPermanently) def aview(request): return HTTPNotFound('not found')
上面的意思是将尝试重定向到斜线附加的路由,但不是
HTTPTemporaryRedirect被使用,HTTPMovedPermanently will be used如果找到斜线追加的路由,则返回重定向响应。见 更改未找到视图 有关详细的使用信息。
在 1.9.1 版本发生变更: 增加了
_depth和_category参数。
- class forbidden_view_config(**settings)[源代码]¶
在 1.3 版本加入.
类似物
pyramid.view.view_config注册了一个 forbidden view 使用pyramid.config.Configurator.add_forbidden_view().禁止使用的视图配置构造函数接受与的构造函数相同的大多数参数。
pyramid.view.view_config. 它可以在相同的地方使用,并且基本上以相同的方式运行,只是它总是注册一个禁止的异常视图,而不是一个“正常”视图。例子:
from pyramid.view import forbidden_view_config from pyramid.response import Response @forbidden_view_config() def forbidden(request): return Response('You are not allowed', status='403 Forbidden')
传递给此函数的所有参数的含义与
pyramid.view.view_config()而每个谓词参数都限制了调用NotFound视图的环境集。见 更改禁止的视图 有关详细的使用信息。
在 1.9.1 版本发生变更: 增加了
_depth和_category参数。
- class exception_view_config(*args, **settings)[源代码]¶
在 1.8 版本加入.
类似物
pyramid.view.view_config注册一个 exception view 使用pyramid.config.Configurator.add_exception_view().这个
exception_view_config构造函数需要异常上下文,并且还接受与的构造函数相同的大多数参数。pyramid.view.view_config. 它可以在相同的地方使用,并且基本上以相同的方式运行,除非它总是注册一个异常视图,而不是一个按请求发送的“普通”视图。 context .例子:
from pyramid.view import exception_view_config from pyramid.response import Response @exception_view_config(ValueError, renderer='json') def error_view(request): return {'error': str(request.exception)}
传递给此函数的所有参数的含义与
pyramid.view.view_config(),并且每个谓词参数都限制调用此异常视图的环境集。在 1.9.1 版本发生变更: 增加了
_depth和_category参数。