检查Cheetah模板字典是否包含键

1 投票
1 回答
1412 浏览
提问于 2025-04-16 18:54

我正在尝试为一个应用程序创建一个基础模板,其中一个目标是去掉页面上不必要的js和css。所以我想在Cheetah模板中做一些事情,比如

#if $dict.has_key('datepicker'):
  <link rel="stylesheet" href="$datepicker" type="text/css" />
#end if

我觉得这样做也能帮助解决一些错误,比如namemap没有'日期选择器'这个键

我现在使用WSGIHandler时遇到的错误是

TypeError: descriptor 'has_key' requires a 'dict' object but received a 'str'

我觉得这可能跟我把处理器的返回值转换成字符串有关,但模板不应该在变成字符串之前就被解析吗?

t = Template(file=WORKSPACE_PATH+"/tmpl/posts.html", searchList=[tmpldict])
self.response_body = str(t).encode('utf8')
return str(t)

1 个回答

1

这个问题是这样的:

dict.has_key('datepicker')

“dict”是一个类,所以“dict.has_key”的第一个参数应该是一个“dict”的实例。

你传入的是一个字符串,而不是一个字典对象。

简单来说,“d.has_key(k)”就相当于“dict.has_key(d, k)”,而你用的是后者。

撰写回答