Как отобразить значения 2 разных списков в 2 разных столбцах в Flask? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть 2 списка в моем Flask приложении, я хочу отобразить значения обоих списков таким образом

Score | Remark 
5     | Excellent
2     | Poor
3     | Satisfactory

И это маршрут в моем файле app.py

def remarks():
    remarks=[]
    if request.method == 'POST':
        score = list(map(float,(request.form['scores']).split()))
        for i in range(len(score)):
            if(score[i]>=4):
                remarks.append("Excellent")
            elif(score[i]==3):
                remarks.append("Satisfactory")
            else:
                remarks.append("Poor")
        return render_template('results.html', score=score, remarks=remarks)

Это мои результаты. html файл

{% extends 'base.html' %}

{% block content %}

<h3>Here is your report</h3>

{% for s in score %}
    <h1>{{s}}</h1>
{% endfor %}

{% endblock %}

Как мне отобразить список примечаний помимо каждой оценки в моих результатах. html файл?

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Используйте словарь вместо массива и визуализируйте его напрямую как ключ-значение.

В вашем app.py сделайте следующее:

def remarks():
    score_remark_dict = {}
    if request.method == 'POST':
        score = list(map(float, (request.form['scores']).split()))
        for i in range(len(score)):
            if score[i] >= 4:
                score_remark_dict[score[i]] = 'Excellent'
            elif score[i] == 3:
                score_remark_dict[score[i]] = 'Satisfactory'
            else:
                score_remark_dict[score[i]] = "Poor"

        return render_template('results.html', score_remark_dict=score_remark_dict)

В вашем HTML сделайте следующее:

 {% extends 'base.html' %}

 {% block content %}

<h3> Here is your report </h3>
<h1> Score |  Remark </h1>
{% for s in score_remark_dict %}
    {{ s }} |  {{ score_remark_dict[s] }}
{% endfor %}

{% endblock %}
1 голос
/ 06 мая 2020

Вы можете заархивировать как оценку, так и примечания в flask. затем вы l oop поверх них в таблице переднего плана

просто чтобы объявить его: отредактируйте последнюю строку (python) return:

score_remarks = zip(score, remarks)
return render_template('results.html',sr=score_remarks)

, и интерфейс будет выглядят так:

<table>
<tr>
    <th>Score</th>
    <th>Remark</th>
</tr>

    {% for s in sr %}
    <tr>    
    <td>{{s[0]}}</td>
    <td>{{s[1]}}</td>
    </tr>
    {% endfor %}

</table>
...