Jinja печатает огромные пробелы в браузере перед выводом, даже если вывод печатается правильно в терминале - PullRequest
0 голосов
/ 03 июля 2019

Мой код печатает большие пробелы в выводе jinja html. А затем после этого печатает требуемые результаты. Я выполняю простое заявление select и хотел бы отобразить его. Я хотел бы избежать (и понять, почему это происходит) пробелов в выводе html.

app.py

from flask import Flask, redirect, render_template
import psycopg2
import os
import sqlalchemy

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(12)


@app.route('/', methods=['GET', 'POST'])
def home():
    engine = sqlalchemy.create_engine('postgresql://user:pw@localhost/db')
    result = engine.execute('select * from person.personphone limit 10;') # adventureworks db
    col_names = result.keys()
    col_vals = [dict(row) for row in result]
    ######################################### used for debugging
    for col in col_names:
        print(col, end=' ')
    print('')
    for row in col_vals:
        for col in col_names:
            print(row[col], end=' ')
        print('')
    ######################################### end debugging

    return render_template('home.html', colname=col_names, colval=col_vals)



if __name__ == '__main__':
    app.run(debug=True)

home.html

{% extends "base.html" %}

{% block content %}

Hello world

<br>

<div id="table">
    <table>
        <tr>
        {% for col in colname %}
            <th>{{ col }} </th>
        {% endfor %}
        </tr>
        <br>
        {% for row in colval %}
            <tr>
            {% for col in colname %}
                <td>{{ row[col] }} </td>
            {% endfor %}
            </tr>
            <br>
        {% endfor %}
    </table>
</div>

{% endblock %}

Терминальный выход:

enter image description here

Вывод Jinja в браузере:

enter image description here

1 Ответ

1 голос
/ 03 июля 2019

Между строками таблицы есть теги <br>, которые печатаются над таблицей. Уберите их - их там быть не должно:

<div id="table">
    <table>
        <tr>
        {% for col in colname %}
            <th>{{ col }} </th>
        {% endfor %}
        </tr>
        {% for row in colval %}
            <tr>
            {% for col in colname %}
                <td>{{ row[col] }} </td>
            {% endfor %}
            </tr>
        {% endfor %}
    </table>
</div>
...