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(object):
    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(object):
    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= 争论。当将空呈现器用作视图呈现器参数时,金字塔避免将视图可调用结果转换为响应对象。如果您想在金字塔路由器使用的上下文之外重用视图配置和查找机器,这是很有用的。