Python中如何实现返回上一页页面不刷新?

页面中有三个下拉菜单,选择下拉菜单后通过 ajax 将选择内容加载到页面,

问题:现在页面有其他跳转,跳转后再次返回上一页(也就是下拉菜单页时),页面刷新,每次都需要重新选

如何能实现再次返回时,页面显示与跳转之前相同?

来,调教吧!
Python中如何实现返回上一页页面不刷新?

5 回复

存 storage 设过期时间


这个问题得看你的应用场景。如果是Web开发,比如用Flask或Django,返回上一页且不刷新通常意味着避免表单重复提交,或者保持页面状态。

最常见的情况是处理表单的POST请求。标准的做法是,在处理完POST请求后,使用 redirect 到另一个GET请求的端点,这被称为 Post/Redirect/Get (PRG) 模式。这样用户刷新页面时,只会刷新最后的GET请求,而不会重复提交表单。

Flask 示例:

from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)

@app.route('/form', methods=['GET'])
def show_form():
    # 假设这里有一些需要渲染到模板的数据
    some_data = "页面原有数据"
    return render_template('form.html', data=some_data)

@app.route('/submit', methods=['POST'])
def handle_submit():
    # 1. 处理表单数据
    user_input = request.form.get('field_name')
    # ... 你的处理逻辑,比如保存到数据库 ...

    # 2. 关键步骤:处理完成后,重定向到一个GET请求的页面(比如表单页本身或结果页)
    # 使用 `redirect` 和 `url_for`
    return redirect(url_for('show_form')) # 重定向回表单页
    # 或者重定向到其他页面:return redirect(url_for('result_page'))

# 一个可选的结果页
@app.route('/result')
def result_page():
    return "提交成功!"

对应的 templates/form.html 可能很简单:

<form action="{{ url_for('handle_submit') }}" method="post">
    <input type="text" name="field_name">
    <input type="submit" value="提交">
</form>
<p>页面数据: {{ data }}</p>

核心解释: 用户访问 /form (GET) 看到页面 -> 提交表单到 /submit (POST) -> 服务器处理数据 -> 服务器返回一个 302 重定向 响应到 /form (GET) -> 用户的浏览器自动请求新的 /form 页面。用户最后看到的地址是 /form,此时刷新浏览器也只是重新执行这个GET请求,不会再次提交POST数据。

一句话总结: 在Web后端使用PRG模式,通过redirect重定向来避免返回/刷新时重复提交动作。

把下拉菜单的选项数据保存到 localstore 对象,每次进入页面时读一下 没有就用默认的

这个和 Python 好像没关系吧,难道你是使用 django 或者 flask,那你跳转时候获取选择数据,返回时候通过模板程序赋值不知道可以比,如果是点浏览器后退按钮,好像不刷新就不好弄

学习一下前端框架,比如 react,vue 之类的,做成单页面应用。
最简单的是使用 bootstrap 模态框 一个页面里建 3 个弹层.

用原始一些的办法,就是把数据放 session 里或 cookie 里,返回时恢复。 用 input type=hidden 也可以把数据带回来。
总之办法多了。

回到顶部