我正在编写一个Mako扩展程序,可以帮助渲染表单。我一直在取得很好的进展,直到我遇到一个关于CSS课程的绊脚石。我想编写看起来像这样的代码:
<%fp:form method="post" action="" class="css-class"%>
...content
</%fp:form>
fp:form引用的函数看起来就像:
@supports_caller
def form(context, **kwargs):
#...
当我运行此代码时,我得到以下异常:
SyntaxException: (SyntaxError) invalid syntax (<unknown>, line 1) (u"fp.form(method=u'post',action=u'',class=u'css-class')") at line: 1 char: 52
这仅在指定“class”属性时发生,可能是因为Mako将属性直接转换为关键字参数而不是字典解包。我尝试将一个特殊的“attrs”参数传递给我的函数,但似乎没有好的方法将一个字典传递给Mako:
<%fp:form method="post" action="" attrs="${{'class':'css-class'}}"%>
#SyntaxError: invalid syntax
<%fp:form method="post" action="" attrs="${dict(class='css-class')}"%>
#Won't work - can't pass 'class' directly as a keyword argument!
那么我该如何解决这个问题呢?我知道我可以指定一个特殊属性,比如“css_class”并将其转换为类,但这有点像黑客攻击并进一步阻止每个库生成一个带有css_class属性的表单。
答案 0 :(得分:2)
没有办法解决这个问题,因为class
是一个关键字,并且总是这样解析。人们通常会使用class_
。