Вложенный цикл в Jinja

У меня есть данные, поступающие в виде списка/кортежа ключей со списком/кортежем значений, и мне нужно прокрутить их и отобразить рядом в виде вопросов и ответов в таблице.

Данные в виде вопросов_страницы_данных.

    {
    (
   'Organisation name', 'Organisation address', 'Type of organisation',
     'Have you delivered projects like this before?', 
     'Upload evidence to support your answer',
     'Your Accountant', 'Responsible person', 
     'Do you have endorsements to support your application?', 
     'Who is endorsing your application?', 
    'Upload evidence to support your answer'
    ):
    (
   'sa', 'sas, asa, as, as', 'Limited Company', True, None, 'as', 'as', False, 
  'weqwe', None
   )
   }

Код Джинджа:

  <table>

  {% for questions,answers in questions_page_data.items()%}
   <tbody class = "table__body">
       {% if questions %}
       {% for question in questions %}
       {% if answers %}
       {% for answer in answers %}
    <tr class = "table__row">

    <td class = "table__cell">
        {{question }}
    </td>
   
    <td class = "table__cell">
    {{answer}}
      </td>

    </tr>
    {%endfor%}
  {%endif%}
  {%endfor%}
  {%endif%}

  </tbody>

  {% endfor %}
   </table>

Я знаю, что код Jinja вообще неверен :). Вот как это должно выглядеть. Пожалуйста посоветуй

  Question                   Answer
  Organisation name          sa

Решит ли перебор нескольких списков вашу проблему? Подробнее см. в сообщении это.

Patrick Yoder 04.04.2022 17:56

Я не могу заархивировать список ключей, так как он имеет повторяющееся имя ключа, которое требуется, поэтому вариант, который я вижу, - это прокрутить его в jinja.

Ram 04.04.2022 18:00

Привет, спасибо за ответ. «Загрузить доказательства, подтверждающие ваш ответ» дважды в кортеже. Если я заархивирую его, один из них будет удален. Надеюсь, это ответ на запрос?

Ram 04.04.2022 22:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте что-то подобное в своем коде Python:

@app.route('/')
def a_route():
    questions_page_data = {
        (
       'Organisation name', 'Organisation address', 'Type of organisation',
         'Have you delivered projects like this before?', 
         'Upload evidence to support your answer',
         'Your Accountant', 'Responsible person', 
         'Do you have endorsements to support your application?', 
         'Who is endorsing your application?', 
        'Upload evidence to support your answer'
        ):
        (
       'sa', 'sas, asa, as, as', 'Limited Company', True, None, 'as', 'as', False, 
      'weqwe', None
       )
      }

    return render_template('a_html_file.html', questions_page_data=questions_page_data, zip=zip)

А затем в своем HTML-шаблоне вы можете использовать zip для одновременного перебора двух списков:

<table>
  {% for questions, answers in questions_page_data.items() %}
    <tbody class = "table__body">
      {% if questions %}
        {% for question, answer in zip(questions,answers) %}
            <tr class = "table__row">

            <td class = "table__cell">
            {{ question }}
            </td>

            <td class = "table__cell">
            {{ answer }}
            </td>

            </tr>
        {% endfor %}
      {% endif %}
    </tbody>
  {% endfor %}
</table>

И, наконец, результат для меня выглядит так: data result

Другие вопросы по теме