为什么输入登录路由后我立即收到 POST 提交请求



我创建了继承自FlaskForm的"LoginForm",当我尝试进入登录站点时,它会立即输入validate_on_submit((或is_Submitted((方法,而无需在现场执行任何操作。看起来网站正在生成 POST 请求,但我不知道为什么。

首先,我检查了validate_on_submit((,然后我尝试了is_submitted((。

@app.route("/login", methods=['POST','GET'])
def login():
    form = LoginForm()
    if form.is_submitted():
        return "in if"
    else:
        return "in else"
    return render_template("login.html", form=form)
 <body>
  <div class="content-section">
        <form method="POST" action="">
        {{ form.hidden_tag() }}
          <h1 class="h3 mb-3 font-weight-normal">Login</h1>
          <form class="form-group">
            {{ form.username.label(class="form-control") }}
            {{ form.username(class="form-control") }}
          </form>
          <form class="form-group">
            {{ form.password.label(class="form-control") }}
            {{ form.password(class="form-control") }}
          </form>
          <div class="checkbox mb-3">
      </div>
          <div class="form-group">
            {{ form.submit(class="btn btn-outline-info") }}
          </div>
     </form>
    </div>
  </body>
class LoginForm(FlaskForm):
    username = StringField('Username',
                        validators=[DataRequired()])
    password = StringField('Password',
                           validators=[DataRequired()])
    submit = SubmitField('Login')

现在,当我输入 localhost:5000/login 时,它会立即将我重定向到带有"inelse"语句的网站,我想在我输入一些数据后提交表单

你需要将代码包装成if request.method == 'POST'

@app.route("/login", methods=['POST','GET'])
def login():
    form = LoginForm()
    if request.method == 'POST':
       if form.is_submitted():
          return "in if"
       else:
          return "in else"
    return render_template("login.html", form=form)

最新更新