Я пишу расширение 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" в свою функцию, но, похоже, нет хорошего способа передать дикт Мако:
<%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.