Python flask中的重定向实际上不会重定向到所需页面。
代码段检查特定用户名、密码,并应重定向到特定页面 当请求登录页面时,会发送一个GET请求。上面的代码段获取用户名和密码并添加到会话字典中。重定向方法会导致POST请求,响应代码为302,然后是一个GET请求,指向所需页面,响应代码为200 OK 但重定向不会发生,它仍保留在同一登录页上 重定向应该有哪些参数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
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'))