Flask render_template занимает 5+ секунд для запуска - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь отобразить страницу с некоторыми данными, передавая словарь в шаблон jinja.Это занимает смехотворно много времени для загрузки, легко 5-10 секунд для очень маленького набора данных.Вот так выглядит мой Python

@app.route("/request") 
def request_page(): 
    category_dict = CONFIG.get_categories() 
    return render_template('request.html', category_dict=category_dict)

А вот так выглядит мой HTML

   {% extends "layout.html" %}
   {% block title %}Categories{% endblock %}
   {% block content %}
        <h1 class="display-4">Category List</h1>
           <form method='post' action='/result' onsubmit="return checkForm(this)">
             <div class="form-group">
                 {% for category, list in category_dict.items() %}
                   <div class="card">
                     <div class="card-header">
                      <a class="text-dark" data-toggle="collapse" href="#{{loop.index}}">
                        {{category}}
                      </a>
                    </div>
                    <div id="{{loop.index}}" class="collapse">
                    <div class="card-body text-small">
                      <ul class="list-group list-group-flush">
                         {% for project in list %}
                          <li class="list-group-item">
                            <div class="form-check">
                              <input class="form-check-input" type="checkbox" name="checkbox" value="{{project}}" id="{{project}}">
                              <label class="form-check-label" for="{{project}}">
                                      {{project}}
                              </label>
                            </div>
                          </li>
                        {% endfor %}
                      </ul>
                    </div>
                    </div>
                  </div>
                {% endfor %}
              <br>
              <h5>Reason for group access</h5>
              <textarea rows="4" cols="60" name="reasons">
              </textarea>
              <br>
            <button class='btn btn-primary' name='Submit'>Submit</button>
          </form>
 {% endblock %}

Итак, в качестве обзора, это вложенный цикл for, где внешний цикл повторяется черезПары ключ-значение словаря и внутреннего цикла перебирают значения, представляющие собой списки строк.Словарь, который я прохожу, не очень большой, ~ 5 клавиш и, возможно, ~ 5 пунктов в каждом списке.Выполнение некоторых тестов также показало, что замедление определенно происходит с этим фрагментом кода в HTML, а не в layout.html или чем-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...