pyramid.renderers
¶
- get_renderer(renderer_name, package=None, registry=None)[源代码]¶
返回渲染器的渲染器对象
renderer_name
.您可以提供相对资产规格作为
renderer_name
. 如果package
提供了参数,通过组合包,相对呈现器名称将转换为绝对资产规范。package
相关资产规格renderer_name
. 如果package
是None
(默认值)的包名称 呼叫者 此函数的将用作包。您可以直接提供 application registry 使用
registry
参数,它将用于查找渲染器。否则,当前线程本地注册表(通过get_current_registry()
)将被使用。
- render(renderer_name, value, request=None, package=None)[源代码]¶
使用渲染器
renderer_name
(模板或静态渲染器),渲染中存在的值(或一组值)value
. 返回渲染器的结果__call__
方法(通常是字符串或Unicode)。如果
renderer_name
引用磁盘上的文件,例如当渲染器是模板时,通常最好将名称作为 asset specification (例如)packagename:path/to/template.pt
)您可以提供相对资产规格作为
renderer_name
. 如果package
提供了参数,通过组合包,相对呈现器路径将转换为绝对资产规范。package
相关资产规格renderer_name
. 如果package
是None
(默认值)的包名称 呼叫者 此函数的将用作包。这个
value
提供的将作为渲染器的输入提供。通常,对于模板渲染,这应该是一个字典。对于其他渲染器,这需要是渲染器期望的任何类型的值。提供给渲染器的“系统”值将包括一组基本的顶级系统名称,例如
request
,context
,renderer_name
和view
. 见 渲染期间使用的系统值 完整的列表。如果 renderer globals 如果已指定,这些值也将用于增加值。供应A
request
参数,以便为渲染器提供最正确的“系统”值 (request
和context
特别是)。
- render_to_response(renderer_name, value, request=None, package=None, response=None)[源代码]¶
使用渲染器
renderer_name
(模板或静态渲染器),使用渲染器的结果渲染值(或一组值)__call__
方法(通常是字符串或Unicode)作为响应主体。如果渲染器名称引用磁盘上的文件(例如当渲染器是模板时),通常最好将该名称作为 asset specification .
您可以提供相对资产规格作为
renderer_name
. 如果package
提供了参数,通过组合包,相对呈现器名称将转换为绝对资产规范。package
相关资产规格renderer_name
. 如果您不提供package
(或)package
是None
)的包名称 呼叫者 此函数的将用作包。这个
value
提供的将作为渲染器的输入提供。通常,对于模板渲染,这应该是一个字典。对于其他渲染器,这需要是渲染器期望的任何类型的值。提供给渲染器的“系统”值将包括一组基本的顶级系统名称,例如
request
,context
,renderer_name
和view
. 见 渲染期间使用的系统值 完整的列表。如果 renderer globals 已指定,这些值也将用于参数化值。供应A
request
参数,以便为渲染器提供最正确的“系统”值 (request
和context
尤其是)。请记住,对request.response
在调用之前,此函数不会反映在结果响应对象中。将为每个调用创建一个新的响应对象,除非其中一个对象作为response
参数。在 1.6 版本发生变更: 在以前的版本中,对
request.response
超出此函数调用将影响返回的响应。情况不再是这样了。如果希望发送预初始化的响应,则可以在response
参数。
- class JSON(serializer=<function dumps>, adapters=(), **kw)[源代码]¶
返回JSON编码字符串的呈现器。
使用配置自定义JSON渲染器
add_renderer()
应用程序启动时的API:from pyramid.config import Configurator config = Configurator() config.add_renderer('myjson', JSON(indent=4))
一旦将此渲染器注册为以上所述,就可以使用
myjson
作为renderer=
参数到@view_config
或add_view()
:from pyramid.view import view_config @view_config(renderer='myjson') def myview(request): return {'greeting':'Hello world'}
通过实现
__json__
神奇的方法,或者通过向渲染器注册适配器。见 序列化自定义对象 更多信息。备注
默认序列化程序使用
json.JSONEncoder
. 可以通过serializer
参数。自定义序列化程序应接受对象回调default
和任何额外的kw
在呈现程序构造期间传递的关键字参数。这个特性并没有被广泛使用,但是它可以用来用simplejson来替换stock-json序列化程序。但是,如果您只想序列化自定义对象,则应使用中解释的方法。 序列化自定义对象 而不是替换序列化程序。在 1.4 版本加入: 在此版本之前,没有公共API可以在不定义自定义呈现器的情况下向底层序列化程序提供选项。
- add_adapter(type_or_iface, adapter)[源代码]¶
当类型(或接口)的对象
type_or_iface
无法使用序列化程序自动编码,渲染器将使用适配器adapter
将其转换为JSON可序列化对象。适配器必须接受两个参数:对象和当前活动的请求。class Foo: x = 5 def foo_adapter(obj, request): return obj.x renderer = JSON(indent=4) renderer.add_adapter(Foo, foo_adapter)
完成此操作后,JSON渲染器将能够序列化
Foo
在视图结果中遇到它们时初始化。
- class JSONP(param_name='callback', **kw)[源代码]¶
JSONP 渲染器工厂帮助器,它实现了混合JSON/JSONP渲染器。jsonp对于发出跨域Ajax请求很有用。
使用配置JSONP渲染器
pyramid.config.Configurator.add_renderer()
应用程序启动时的API:from pyramid.config import Configurator config = Configurator() config.add_renderer('jsonp', JSONP(param_name='callback'))
类的构造函数还接受任意关键字参数。所有关键字参数,除了
param_name
传递给json.dumps
函数作为其关键字参数。from pyramid.config import Configurator config = Configurator() config.add_renderer('jsonp', JSONP(param_name='callback', indent=4))
在 1.4 版本发生变更: 该类接受
**kw
在其构造函数中。传递给此类构造函数的参数与传递给
pyramid.renderers.JSON
(包括serializer
和adapters
)一旦此渲染器通过
add_renderer()
如上所述,您可以使用jsonp
作为renderer=
参数到@view_config
或pyramid.config.Configurator.add_view()
“:from pyramid.view import view_config @view_config(renderer='jsonp') def myview(request): return {'greeting':'Hello world'}
当调用使用JSONP渲染器的视图时:
如果请求的HTTP查询字符串中有一个参数与
param_name
注册的JSONP渲染器(默认情况下,callback
,渲染器将返回JSONP响应。如果请求的查询字符串中没有回调参数,则渲染器将返回“plain”JSON响应。
在 1.1 版本加入.
参见
也见 JSONP渲染器 .
- add_adapter(type_or_iface, adapter)¶
当类型(或接口)的对象
type_or_iface
无法使用序列化程序自动编码,渲染器将使用适配器adapter
将其转换为JSON可序列化对象。适配器必须接受两个参数:对象和当前活动的请求。class Foo: x = 5 def foo_adapter(obj, request): return obj.x renderer = JSON(indent=4) renderer.add_adapter(Foo, foo_adapter)
完成此操作后,JSON渲染器将能够序列化
Foo
在视图结果中遇到它们时初始化。
- null_renderer¶
可在高级集成案例中用作视图配置输入的对象
renderer=
参数。当将空呈现器用作视图呈现器参数时,Pyramid避免将视图可调用结果转换为响应对象。如果您想在Pyramid路由器使用的上下文之外重用视图配置和查找机器,这是很有用的。