Python 503子类的金字塔视图
当我在我的应用程序中遇到特定情况时,我想提供一些模板化html以及503状态代码。子类化pyramid 503异常可以很方便地表示这一点:Python 503子类的金字塔视图,python,pyramid,Python,Pyramid,当我在我的应用程序中遇到特定情况时,我想提供一些模板化html以及503状态代码。子类化pyramid 503异常可以很方便地表示这一点: from pyramid.httpexceptions import HTTPServiceUnavailable class PleaseWait(HTTPServiceUnavailable): pass def business_logic(): if not_ready(): raise PleaseWait()
from pyramid.httpexceptions import HTTPServiceUnavailable
class PleaseWait(HTTPServiceUnavailable):
pass
def business_logic():
if not_ready():
raise PleaseWait()
我搞不懂的是如何将模板连接到PleaseWait
。这几乎可以工作,但代码为200:
config.add_view(
renderer='templates/please_wait.jinja2',
context='my_app.PleaseWait',
)
这完全可行,但看起来很混乱:
@view_config(context=PleaseWait, renderer='templates/please_wait.jinja2')
def please_wait(exc, request):
request.response.status = 503
return {}
这也是可行的,但似乎很奇怪:
request.response=exc
而不是raise
你能在哪里构建完整的HTTP响应,包括响应体中的渲染模板?@mikkoohtama我会收到一个错误,比如“没有这样的渲染器工厂:jinja2”,尽管我确信我在配置中正确导入了jinja2工厂。我可以很好地呈现其他视图的jinja2模板。如果有错误,您可以发布错误的完整回溯吗?还有相关的配置Python代码。您自己设置response.status代码的最后一个代码是Pyramid开发人员使用的方式<您的请稍候()
视图中的code>exc是一个完整的响应,因此可以设置为request.Response
,或者您甚至可以返回exc
以获得相同的效果。