Python Bottle - 模板中的内联IF语句

2 投票
1 回答
4644 浏览
提问于 2025-04-17 22:15
Make = <SELECT name="where_make">
        % for make in makes:
            <OPTION value="{{make}}" 
            % if make == defaults['make']:
                selected="selected"
            % end
            >{{make}}</option>
        %end

我该如何把这个if语句写成一行呢?

1 个回答

7

Bottle自带的模板引擎支持内联if语句

<option value="{{make}}" {{!'selected="selected"' if make == defaults['make'] else ""}}>{{make}}</option>

注意在selected="selected"前面的感叹号,它是告诉模板引擎不要对引号进行转义。

演示:

from bottle import SimpleTemplate

tpl = SimpleTemplate("""Make = <SELECT name="where_make">
        % for make in makes:
            <option value="{{make}}" {{!'selected="selected"' if make == defaults['make'] else ""}}>{{make}}</option>
        %end""")
print tpl.render(make='test', defaults={'make': 'test'}, makes=['test'])

输出结果是:

Make = <SELECT name="where_make">
            <option value="test" selected="selected">test</option>

希望这对你有帮助。

撰写回答