gpt4 book ai didi

python - Mako 动态模板继承

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:34 25 4
gpt4 key购买 nike

我们有这段代码并且运行良好。重构后,它不再起作用了。正如评论所说,如果请求不是 ajax 请求,我们只想从基页继承。为此,我们将一个参数传递给模板,并根据该参数决定是否继承。

查看.py

class Router(object):
def __init__(self, request):
self.request = request

@view_config(route_name="home")
def get(self):
template = "home.mak"
value = {'isPage':self.request.is_xhr is False}
return render_to_response(template, value, request=self.request)

模板.mak

##conditional to determine with the template should inherit from the base page
##it shouldn't inherit from the base page is it is being inserted into the page using ajax
<%!

def inherit(context):
if context.get('isPage') == True:
return "base.mak"
else:
return None
%>
<%inherit file="${inherit(context)}"/>

目前,错误是 Undefined does not have attribute __getitem__。如果我们将 ${inherit(context)} 更改为 ${inherit(value)},我们会得到全局变量值未定义。

最佳答案

只是遇到了同样的问题,实际上也是同样的用例(是否渲染布局取决于请求是 XHR)。

显然,您可以通过 context 访问 request,因此您可以避免将这一小部分逻辑拆分到两个地方( View 和模板):

<%!
def inherit( context ):
if not context.get('request').is_xhr:
return 'layout_reports.mako'
else:
return None
%>
<%inherit file="${inherit(context)}"/>

关于python - Mako 动态模板继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17347286/

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