我尝试在视图中构建一个表并将其推送到该视图的模板,因为在模板中执行它并不是可行的。我可以生成一个包含正确信息的字符串,但是当在浏览器中评估该模板变量时,会有额外的引号和空格似乎无法正确生成表。
以下是视图中的代码:
for unique_activity in uniquelist:
currentrow = '<tr data-activityID="' + str(unique_activity[0])+ '">' + '<td>' + str(unique_activity[1]) + '</td>'
for visit in visits_list:
for activity in visit.activity_set.all():
if activity.id == unique_activity[0]:
currentrow = currentrow + '<td>' + 'Reps:'+ str(activity.Repetitions) + '</td>'
else:
noact = True
if noact == True:
currentrow = currentrow + '<td></td>'
currentrow = currentrow + '</tr>\n'
tablerows.append(currentrow)
table = '<table>'
for row in tablerows:
table = table + row
table = table + '</table>'
table = str(table)
输出是它需要的......示例<table><tr data-activityID="1"><td>Initial Evaluation</td><td>Reps:None</td><td></td><td></td></tr> <tr data-activityID="3"><td>Cold Pack</td><td></td><td>Reps:None</td><td></td></tr> <tr data-activityID="6"><td>Recumbent Exercise Bike</td><td>Reps:12</td><td></td><td></td></tr> <tr data-activityID="7"><td>Leg Press</td><td></td><td></td></tr> <tr data-activityID="8"><td>Shoulder Ladder</td><td></td><td></td></tr> </table>
然而,这是在DOM中显示的内容,我输出到模板的所有内容都只是{{table}},这就是输出到DOM信息的内容,
并导致只显示字符串,而不是表格。
以下是模板代码段
<body>
{% if activity_list %}
<table>
{% for activity in activity_list %}
<tr>
<td>{{ activity.ActivityType.Name }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
{{ table }}
</body>
我不知道到底是什么......
答案 0 :(得分:1)
这听起来像您的基本模板(或其他地方)可能已autoescape。如果您希望将变量作为HTML包含在内并且未安全地转换为文本,则必须在其周围关闭autoescape
,或使用safe template filter标记它。这是一个尝试和说明的示例模板。
<p>The following table should be rendered as escaped safe text.</p>
{{ table }}
<p>But with the safe filter, it will be rendered as html!</p>
{{ table|safe }}
<p>And maybe, I want to do this to a few things or have a block of safe html, so I'll just turn the autoescape off for a bit!</p>
{% autoescape off %}
{{ table }}
{{ some_other_safe_html }}
{% endautoescape %}
使用您提供的代码段,这里是带安全转义的代码:
<body>
{% if activity_list %}
<table>
{% for activity in activity_list %}
<tr>
<td>{{ activity.ActivityType.Name }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
{{ table|safe }}
</body>