Python flask中的重定向实际上不会重定向到所需页面。

Python flask中的重定向实际上不会重定向到所需页面。,python,redirect,flask,Python,Redirect,Flask,代码段检查特定用户名、密码,并应重定向到特定页面 当请求登录页面时,会发送一个GET请求。上面的代码段获取用户名和密码并添加到会话字典中。重定向方法会导致POST请求,响应代码为302,然后是一个GET请求,指向所需页面,响应代码为200 OK 但重定向不会发生,它仍保留在同一登录页上 重定向应该有哪些参数 class XX(MethodView): def get(self): .... def post(self): error = None

代码段检查特定用户名、密码,并应重定向到特定页面

当请求登录页面时,会发送一个GET请求。上面的代码段获取用户名和密码并添加到会话字典中。重定向方法会导致POST请求,响应代码为302,然后是一个GET请求,指向所需页面,响应代码为200 OK

但重定向不会发生,它仍保留在同一登录页上

重定向应该有哪些参数

class XX(MethodView):
  def get(self):
           ....

  def post(self):
    error = None
        user = request.form['username']
        password = request.form['password']

    print user,password
    if user == 'xxx' and password == 'xx':
        session['logged_in'] = True
        session['session_user'] = 'xx'                              
        return redirect("control")

    else:
        errors = []
        errors.append("Login error")
        return render_template("login.html" , errors=errors)

#adding rule for control Blueprint
control.add_url_rule("/control",view_func= ControlView.as_view('control'))

为什么使用
render_template('XX.html')
以500个响应代码进行响应???

此代码是否在名为“control”的蓝图中?根据上面显示的代码,我猜是的

当您使用blueprints时,您无法预先知道最终URL(例如:
/control
),因为blueprint用户可以将基本URL映射到他们想要的任何位置

假设这是一个蓝图,重定向到视图的最佳方法是使用蓝图URL符号:
redirect(URL\u for('control.control'))

如果这不会在蓝图中使用,您应该能够执行如下操作:
重定向(url\u for('control'))
,只要这是添加到路由时的视图名称

希望这是清楚的


如果在尝试以上两个示例时仍有错误,请启用Flask调试(
app.config['DEBUG']=True
)并重试。回溯应该更深入地解释发生了什么。

你应该访问什么获取方法(XX->GET)??XX.html是登录后的主页
重定向('/control')
@kartheek:不,它不起作用。它给出了500个内部服务器错误控制台中500个错误之外没有错误?
重定向(url\u for('control'))
没有使用
Blueprint
,但是使用
Blueprint
重定向(url\u for('control.control'))
没有。您可能需要检查导入蓝图的核心应用程序——您需要确保您的蓝图实际命名为“control”——我怀疑这就是问题所在。
redirect('control')

redirect(url_for('control'))

redirect(url_for('control.control'))