gpt4 book ai didi

python - 在 Pyramid 中使用 '@notfound_view_config' 和 'renderer'

转载 作者:行者123 更新时间:2023-11-30 23:37:20 25 4
gpt4 key购买 nike

使用 @notfound_view_config 时,我无法渲染指定的模板如 Pyramid Docs - Using Hooks 中所述.

views.py:

@notfound_view_config(renderer='templates/notfound.pt')
def notfound(request):
return Response('Not Found, dude', status='404 Not Found')

模板/notfound.pt:

<html xmlns="http://www.w3.org/1999/xhtml"
metal:use-macro="base">

<tal:block metal:fill-slot="content">

<!-- Example row of columns -->
<div class="row">
<div class="span12">
<h1>Error:</h1>
<p>Uh, oh... you snagged an error:</p>
<pre>"${request}"</pre>

<p>You can return to the <a href="${request.application_url}">homepage</a> if you wish.</p>

</div>
</div>

</tal:block>
</html>

当点击不存在的页面时,我在空白页面上看到消息“未找到,伙计”,但我希望看到我的模板带有“呃,哦...你发现了一个错误!”接下来是请求信息。

我怀疑我读错了:

The notfound_view_config constructor accepts most of the same arguments as the constructor of pyramid.view.view_config. It can be used in the same places, and behaves in largely the same way, except it always registers a not found exception view instead of a ‘normal’ view.

一方面,我似乎应该能够将“渲染器”指定为参数,因为它在 pyramid.view.view_config 中受支持。另一方面,听起来它总是加载[未找到异常 View ][3],无论“渲染器”选项如何。

真的,我的最终问题(和目标)是,每当找不到页面时如何显示/呈现我的模板?

最佳答案

Pyramid 中的渲染器- View 关系始终相同。如果您返回 Response 对象,那么您声明的渲染器将被绕过。这允许您执行诸如if Submit: return HTTPFound(location=...) else: return {}之类的操作。如果您想影响响应对象并仍然使用渲染器,请返回所需的字典并改变 request.response(用于所有渲染器的响应对象)。

@notfound_view_config(renderer='templates/notfound.pt')
def notfound(request):
request.response.status = 404
return {}

关于python - 在 Pyramid 中使用 '@notfound_view_config' 和 'renderer',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com