我有一个sqlalchemy查询,它会渲染一个带有几个设置的模板。
您可以在下面找到非常简化的代码,以了解正在发生的事情。此代码为每个页面上的设置添加一个复选框字段,此时没有固定的nr设置,它取决于表的大小。就分页而言,这很好。我可以转到下一页和上一页。页面上的提交按钮仅发布最后一页的复选框值。是否可以记住和/或保存所有页面的输入,而不仅仅是最后一页?
@app.route('/settings')
def settings():
page = request.args.get('page', 1, type=int)
settings = Settings.query.paginate(page, 1, False)
next_url = url_for('settings', page=settings.next_num) \
if settings.has_next else None
prev_url = url_for('settings', page=settings.prev_num) \
if settings.has_prev else None
inputtype = 'checkbox'
return render_template("settings.html",
settings = settings,
inputtype = inputtype,
next_url = next_url,
prev_url = prev_url
)
模板就是这样的。
<div class="form-check">
{% for setting in settings %}
<input type="{{ inputtype }}" value="{{ setting }}" {{ setting }}
{% endfor %}
<div class=pagination>
{% if prev_url %}
<a href=" {{ prev_url }} "> Previous </a>
(% endif %}
{% if next_url %}
<a href=" {{ next_url }} "> Next </a>
{% endif %}
</div>
<div class="panel-footer">
<input class="btn btn-primary" role="button" type="submit" value="Submit">
</div>
答案 0 :(得分:1)
我觉得如果你提交,你只需在当前页面上提交设置。页面上只有当前设置,将所有设置添加到页面中没有多大意义。
如果您使用链接进入上一个和下一个设置,我认为您在多个页面上无法实现所需。 如果您在第1页上进行了更改,然后单击“下一步”,则第1页上所做的更改不会保存在任何位置,以免丢失。
也许有可能让上一个和下一个也发布到设置。这样,您可以从该页面获取设置,并可以创建一个临时设置对象,您可以在单击提交时处理该对象。
答案 1 :(得分:0)
我在不使用javascript的情况下解决了这个问题。我偶然发现了这个答案。它只是发布一个帖子请求并跳转到下一页。 @hugo,谢谢你的回答,这无疑帮助我找到了正确的方向。