Mako,在一行中使用if / else控制结构

时间:2014-02-07 16:33:15

标签: python mako

我想做这样的事情,限制在线。我不能使用多行。

% if object.lang == 'fr_FR': 'Rappel de paimenet' % else: 'Payment reminder' %endif

我知道这不是很好的语法,但我确实在文档中找到了我如何设法做到这一点?

干杯

3 个答案:

答案 0 :(得分:1)

don't think you can do this with Mako,至少不是你想要的方式。

  

只要没有文字在它之前,%就可以出现在该行的任何位置;

您可以这样做的一种方法是不将if语句放在模板中。您似乎正在尝试使用翻译,因此请在您用于提供模板的代码中进行翻译:

text = 'Rappel de paimenet' if object.lang == 'fr_FR' else 'Payment reminder'
# Now your template doesn't need to use an if-statement
template = Template("""Status: {{text}}""").render(text=text)

由于您似乎将其用于翻译,因此我会考虑使用gettextBabel。如果您在Web应用程序中使用此功能,请查看任何特定于翻译的实用程序(例如django-babelflask-babel)。

答案 1 :(得分:1)

你可以用纯python做到这一点。

var = {True: newValueIfTrue, False: newValueIfFalse}[condition]

将它包装在模板中应该很容易。

答案 2 :(得分:0)

${object.lang == 'fr_FR' and 'Rappel de paimenet' or 'Payment reminder'}

或者如果您想将其扩展为更多语言,则默认使用英语:

${{'fr_FR': 'Rappel de paimenet', 'es_ES': ...}.get(object.lang, 'Payment reminder')}