1

我有一个要渲染的模板,但由于它也有一些标签,因此很难访问特定的字符串。代码如下:

   template="""
   <select>
   <option {% if record.views = '%s' %} selected {% endif %}>'%s'
   </select>
   """%(pop, pop)

在这里,我想要 pop 的值,但它给出了一个错误:

    Caught TypeError while rendering: not enough arguments for format string

任何解决方案我如何访问这些字符串格式。谢谢

4

4 回答 4

4

说真的,不要尝试预处理模板语言。这是一种模板语言!它处理这种事情!

发送selected_type到模板上下文,然后执行:

<option {% if record.views = selected_type %} selected {% endif %}>'{{ selected_type }}'
于 2012-07-06T14:25:05.690 回答
3

您需要将 % 符号加倍:

template="""
   <select>
   <option {%% if record.views = '%s' %%} selected {%% endif %%}>'%s'
   </select>
   """%(pop, pop)

产量

<select>
<option {% if record.views = '1' %} selected {% endif %}>'1'
</select>

对于流行='1'

于 2012-07-06T13:37:22.247 回答
0

你应该加倍“%”来逃避它们

template="""
   <select>
   <option {%% if record.views = '%s' %%} selected {%% endif %%}>'%s'
   </select>
   """%(pop, pop)
于 2012-07-06T13:37:00.597 回答
0

您收到错误是因为 Python 正在寻找填充所有四个%符号。您需要通过%在它们前面添加另一个来逃避它们,如下所示:

template="""
   <select>
   <option {%% if record.views = '%s' %%} selected {%% endif %%}>'%s'
   </select>
   """%(pop, pop)
于 2012-07-06T14:02:55.937 回答