Django在将字符串推送到模板

时间:2016-09-20 17:26:59

标签: django django-templates django-views

我尝试在视图中构建一个表并将其推送到该视图的模板,因为在模板中执行它并不是可行的。我可以生成一个包含正确信息的字符串,但是当在浏览器中评估该模板变量时,会有额外的引号和空格似乎无法正确生成表。

以下是视图中的代码:

    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信息的内容,

enter image description here

并导致只显示字符串,而不是表格。

以下是模板代码段

    <body>
{% if activity_list %}
    <table>
    {% for activity in activity_list %}
        <tr>
            <td>{{ activity.ActivityType.Name }}</td>
        </tr>
    {% endfor %}
    </table>
{% endif %}
{{ table }}
</body>

我不知道到底是什么......

1 个答案:

答案 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>