pyramid.view

render_view_to_response(context, request, name='', secure=True)[源代码]

打电话给 view callable 配置了 view configurationview name name 针对指定的 contextrequest 并返回 response 对象。此函数将返回 None 如果一个对应的 view callable 找不到(如果没有 view configuration 匹配的组合 name / context 和/和 request

如果 secureTrueview callable 找到的受权限保护,将在调用视图函数之前检查权限。如果权限检查不允许执行视图(基于当前 authorization policy a) pyramid.httpexceptions.HTTPForbidden 将引发异常。例外情况 args 属性解释为什么不允许视图访问。

如果 secureFalse ,未执行权限检查。

render_view_to_iterable(context, request, name='', secure=True)[源代码]

打电话给 view callable 配置了 view configurationview name name 针对指定的 contextrequest 并返回表示响应主体的不可重复对象。此函数将返回 None 如果一个对应的 view callable 找不到(如果没有 view configuration 匹配的组合 name / context 和/和 request )此外,此函数将引发 ValueError 如果找到并调用了视图函数,但视图函数的结果没有 app_iter 属性。

通常可以通过调用 b''.join(iterable) 或只是使用 pyramid.view.render_view() 相反。

如果 secureTrue ,并且视图受权限保护,将在调用视图函数之前检查权限。如果权限检查不允许执行视图(基于当前 authentication policy a) pyramid.httpexceptions.HTTPForbidden 将引发异常;其 args 属性解释为什么不允许视图访问。

如果 secureFalse ,未执行权限检查。

render_view(context, request, name='', secure=True)[源代码]

打电话给 view callable 配置了 view configurationview name name 针对指定的 contextrequest 并展开视图响应 app_iter (见 查看可调用响应 )变成一个字节串。此函数将返回 None 如果一个对应的 view callable 找不到(如果没有 view configuration 匹配的组合 name / context 和/和 request )此外,此函数将引发 ValueError 如果找到并调用了视图函数,但视图函数的结果没有 app_iter 属性。此函数将返回 None 如果找不到相应的视图。

如果 secureTrue ,并且该视图受权限保护,在调用该视图之前将检查该权限。如果权限检查不允许执行视图(基于当前 authorization policy a) pyramid.httpexceptions.HTTPForbidden 将引发异常;其 args 属性解释为什么不允许视图访问。

如果 secureFalse ,未执行权限检查。

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 支持以下关键字参数: contextexceptionpermissionnamerequest_typeroute_namerequest_methodrequest_paramcontainmentxhracceptheaderpath_infocustom_predicatesdecoratormapperhttp_cacherequire_csrfmatch_paramcheck_csrfphysical_pathview_options .

这些参数的含义与传递给 pyramid.config.Configurator.add_view() . 如果遗漏任何参数,则其默认值将是等效的 add_view 违约。

将传递给 venusian attach 函数是 _depth_category .

_depth 是为希望从另一个装饰器重用此类的人提供的。默认值为 0 并且应该相对于 view_config 调用。它将传递给 venusian attach 当Venusian检查装饰器是否在类或模块上下文中使用时,函数作为调用堆栈的深度。它不常用,但在这种情况下可能有用。

_category 设置装饰器类别名称。它可以与 category 的参数 scan 控制应处理哪些视图。

venusian.attach() 在金星函数中获取更多关于 _depth_category 争论。

警告

view_config 将仅在模块顶级成员上工作,因为 venusian.Scanner.scan .

class 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_slashTrue ,当调用未找到视图,并且当前路径信息没有以斜线结尾时,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 争论。