我正在尝试显示一个包含一些数据的页面,将字典传递给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或其他任何代码。