pyramid.renderers

get_renderer(renderer_name, package=None, registry=None)[源代码]

返回渲染器的渲染器对象 renderer_name .

您可以提供相对资产规格作为 renderer_name . 如果 package 提供了参数,通过组合包,相对呈现器名称将转换为绝对资产规范。 package 相关资产规格 renderer_name . 如果 packageNone (默认值)的包名称 呼叫者 此函数的将用作包。

您可以直接提供 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 . 如果 packageNone (默认值)的包名称 呼叫者 此函数的将用作包。

这个 value 提供的将作为渲染器的输入提供。通常,对于模板渲染,这应该是一个字典。对于其他渲染器,这需要是渲染器期望的任何类型的值。

提供给渲染器的“系统”值将包括一组基本的顶级系统名称,例如 requestcontextrenderer_nameview . 见 渲染期间使用的系统值 完整的列表。如果 renderer globals 如果已指定,这些值也将用于增加值。

供应A request 参数,以便为渲染器提供最正确的“系统”值 (requestcontext 特别是)。

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 (或) packageNone )的包名称 呼叫者 此函数的将用作包。

这个 value 提供的将作为渲染器的输入提供。通常,对于模板渲染,这应该是一个字典。对于其他渲染器,这需要是渲染器期望的任何类型的值。

提供给渲染器的“系统”值将包括一组基本的顶级系统名称,例如 requestcontextrenderer_nameview . 见 渲染期间使用的系统值 完整的列表。如果 renderer globals 已指定,这些值也将用于参数化值。

供应A request 参数,以便为渲染器提供最正确的“系统”值 (requestcontext 尤其是)。请记住,对 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_configadd_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 (包括 serializeradapters

一旦此渲染器通过 add_renderer() 如上所述,您可以使用 jsonp 作为 renderer= 参数到 @view_configpyramid.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路由器使用的上下文之外重用视图配置和查找机器,这是很有用的。