You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask开发中如何识别同一表单内的不同提交按钮并执行对应逻辑

你当前的Home按钮逻辑写在表单校验的代码块内,只有登录表单校验通过才会触发判断,用户未填表单直接点Home时逻辑无法生效,调整方法如下:

方案1:最小改动修复现有逻辑

第一步:修改app.py中login路由逻辑

把Home按钮的判断提到表单校验逻辑之外:

from flask import request, redirect, url_for # 确保已导入对应依赖

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    # 先判断是否点击了Home按钮
    if request.method == "POST" and request.form.get('home') == 'Home':
        print("Home pressed")
        # 更推荐用redirect跳转首页路由,而非直接渲染模板,避免路径异常
        # 如果你首页对应的路由函数名为index,就写url_for('index'),按需修改
        return redirect(url_for('index'))
        # 如果确实要直接渲染index.html,再用下面这行
        # return render_template('index.html')

    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        if user:
            if check_password_hash(user.password, form.password.data):
                login_user(user, remember=form.remember.data)
                return redirect(url_for('dashboard'))
            return '<h1>Invalid username or password</h1>'
    return render_template('login.html', form=form)

第二步:login.html模板无需改动,原有Home按钮代码可以直接保留。


方案2:更简洁的优化方案(推荐)

Home按钮不需要提交登录表单,直接用超链接跳转即可,不用改后端逻辑,性能更好逻辑也更清晰:

修改login.html模板代码:

把原有Home按钮的input行替换为样式统一的超链接按钮:

{% block content %}
    <div class="container">

      <form class="form-signin" method="POST" action="/login">
        <h2 class="form-signin-heading">Please sign in</h2>
        {{ form.hidden_tag() }}
        {{ wtf.form_field(form.username) }}
        {{ wtf.form_field(form.password) }}
        {{ wtf.form_field(form.remember) }}
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
        <!-- 替换为超链接按钮,url_for自动拼接首页路由,按需修改路由函数名 -->
        <a href="{{ url_for('index') }}" class="btn btn-lg btn-default btn-block">Home</a>
      </form>

    </div> <!-- /container -->
{% endblock %}

这个方案不需要修改app.py的代码,点击后直接跳转到首页,不需要走POST提交逻辑。

效果参考

登录页面效果示意图

内容的提问来源于stack exchange,提问作者user7531258

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:57:02