Python Flask 错误请求

Python Flask bad request

我正在 python 和 flask 中制作基于文本的浏览器游戏,但我遇到了一个奇怪的问题。

当我尝试登录我的网站时出现 "bad request" 错误。

这是我的登录路径:

@app.route('/login/', methods=['GET','POST'])
def login():
    if current_user.is_authenticated:
        return redirect("/game/", code=302)

    # when the form is filled in
    if request.method == 'POST':

        # register the user
        if request.form['regSubmit'] == 'regSubmit':
            username = request.form['regUser']
            password = request.form['regPassword']
            address = request.form['regAddress']
            register_user(username=username,password=password,address=address)
            print(address)
            return redirect("/login/", code=302)

  # login user
        if request.form['logSubmit'] == 'logSubmit':
            print('lol')
            username = request.form['logUser']
            password = request.form['logPassword']
            result = users.find_one({"user": username})

            if result and check_password_hash(result['password'], password):
                user_obj = User(result['_id'])
                login_user(user_obj)
                return redirect("/game/", code=302)

    return render_template('out.html')

这是我的登录模式:

 <div id="loginModal" class="modal fade">
   <div class="modal-dialog">
     <div class="modal-content">
       <div class="modal-header">
         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
         <h4 class="modal-title">Login</h4>
       </div>

       <form method="post">
        <div class="modal-body">
          <p>Please enter your username and password.</p>
          <div class="form-group">
      <label class="control-label" for="logUser">Username</label>
      <input type="text" name="logUser" class="form-control" id="logUser">
    </div>
    <div class="form-group">
      <label class="control-label" for="logPassword">Password</label>
      <input type="password" name="logPassword" class="form-control" id="logPassword">
    </div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          <button type="submit" name="logSubmit" value="logSubmit" class="btn btn-primary">Submit</button>
        </div>
       </form>

     </div>
   </div>
 </div>

我认为您的代码失败是因为您正在尝试访问 request.form['regSubmit'],但您的表单中不存在该字段。访问任何不存在的表单字段将导致 Flask return 一个 400 Bad Request 错误。

为了解决这个问题,您可以将登录和注册操作提交到不同的 Flask 视图,或者您可以使用 try...except 块来捕获通过尝试访问非-存在表单域。