金字塔:自定义404页面返回"200 OK"

The*_*uhn 18 python pyramid

我在Pyramid应用程序中定义了自定义404视图:

@view_config(context=HTTPNotFound, renderer='404.pt')
def not_found(self, request):
     return {}
Run Code Online (Sandbox Code Playgroud)

它工作正常,除了与内容一起发送的HTTP状态代码是200 OK,这无论如何都不行.403 Forbidden我遇到了同样的问题.如何让Pyramid发送正确的状态代码?

Mic*_*kel 20

异常视图是一个单独的视图,为您提供所需的任何内容.就像使用渲染器的任何视图一样,您可以通过request.response修改响应对象来修改其行为.渲染器然后填充身体.

@view_config(context=HTTPNotFound, renderer='404.pt')
def not_found(self, request):
    request.response.status = 404
    return {}
Run Code Online (Sandbox Code Playgroud)

  • 如果将其设置为整数,它将在其内部查找表中查找状态并为您填写字符串.这是一个方便的皱纹,可能应该更好地记录. (3认同)
  • 完善!但是,一次更正:状态应为'404 Not Found'.从Pyramid文档:"response.status - 响应代码加原因消息,如'200 OK'.要设置没有消息的代码,请使用status_int,即:response.status_int = 200." (2认同)

ajo*_*era 7

实际上,在金字塔1.3中有一个新的装饰器@notfound_view_config.

@notfound_view_config(renderer = '404_error.jinja2')
def notfound(request):
    request.response.status = 404
Run Code Online (Sandbox Code Playgroud)