qq_41044461 2022-12-26 17:36 采纳率: 40%
浏览 9
已结题

flask paginate点击下一页后保留表单数据

问题遇到的现象和发生背景

做了一个网页查询界面,里面包括一些查询表单和分页功能

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
{% extends "base.html" %}
{% import 'bootstrap/wtf.html' as wtf %}

{% block app_content %}
<h1>你好,{{ current_user.username }}!</h1>
<div class="row">
        <div class="form-inline">
            {{ wtf.quick_form(user_search_form) }}
        </div>
    </div>
<br>
<div style="width:1200px;overflow-x:auto">
    <table class="table table-hover">
        <tr>
            <th>姓名</th>
            <th>身份证号码</th>
            <th>类别</th>
        </tr>
        {% for user in users %}
        <tr>
            <td>{{user.username}}</td>
            <td>{{user.id_card}}</td>
            <td>{{user.organization}}</td>
            <td><a href="{{ url_for('alter_user',old_user_id = user.id)  }}">修改</a></td>
        </tr>
        {% endfor%}
    </table>
        <br>
    <p>新用户? <a href="{{ url_for('register') }}">点击添加</a></p>
</div>
<nav aria-label="...">
    <ul class="pager">
        <li class="previous{% if not prev_url %} disabled{% endif %}">
            <a href="{{ prev_url or '#' }}">
                <span aria-hidden="true">&larr;</span> 上一页
            </a>
        </li>
        <li class="next{% if not next_url %} disabled{% endif %}">
            <a href="{{ next_url or '#' }}">
                下一页 <span aria-hidden="true">&rarr;</span>
            </a>
        </li>
    </ul>
</nav>
{% endblock %}


@app.route('/user', methods=['GET', 'POST'])
@login_required
def user():
    user_search_form = UserSearchForm()
    page = request.args.get('page', 1, type=int)
    print(user_search_form.search_content.data)
    users = User.query.paginate(page=page,
                                per_page=app.config[
                                    'USERS_PER_PAGE'],
                                error_out=False)
    if user_search_form.validate_on_submit() and user_search_form.search_submit.data:
        users = User.query.filter(User.username.like('%' + user_search_form.search_content.data + '%')).paginate(
            page=page,
            per_page=app.config[
                'USERS_PER_PAGE'],
            error_out=False)

    next_url = url_for('user',
                       page=users.next_num) if users.has_next else None
    prev_url = url_for('user',
                       page=users.prev_num) if users.has_prev else None

    return render_template('user.html', users=users.items, next_url=next_url, prev_url=prev_url,
                           user_search_form=user_search_form)

运行结果及详细报错内容

在表单中输入查询内容搜索后点击下一页,表单内的所有信息都会清空,同时查询的信息也变成原来不加搜索条件的结果

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

想用ajax或者将表单值保存下来的方式将表单传到下一页,但不知道代码如何实现

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

问问有没有什么更好的方法实现以上功能,或者如果是我的这种想法要如何通过代码实现

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-26 18:05
    关注

    你可以在 URL 中将查询参数添加到分页链接上,以便在转到下一页时保留查询内容。为此,你可以将查询内容作为 URL 参数添加到链接中。


    例如,假设表单中的查询内容存储在 search_content 字段中,则可以将查询内容作为参数添加到分页链接中,如下所示:

    next_url = url_for('user', page=users.next_num, search_content=user_search_form.search_content.data) if users.has_next else None
    prev_url = url_for('user', page=users.prev_num, search_content=user_search_form.search_content.data) if users.has_prev else None
    

    然后,在路由函数中,你可以使用 request.args.get 方法获取查询内容参数,并使用它进行过滤:

    search_content = request.args.get('search_content')
    if search_content:
        users = User.query.filter(User.username.like('%' + search_content + '%')).paginate(
            page=page,
            per_page=app.config[
                'USERS_PER_PAGE'],
            error_out=False)
    else:
        users = User.query.paginate(page=page,
                                    per_page=app.config[
                                        'USERS_PER_PAGE'],
                                    error_out=False)
    

    这样,在点击下一页时,查询内容参数就会被保留在 URL 中,并在转到下一页时使用它对数据进行过滤。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 修改了问题 12月26日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目