我实际上是用Flask创建一个应用程序,遇到路由方面的问题。
我的情况很简单:用户输入令牌进行身份验证。一旦他点击了 authenticate ,一个有角度的HTTP请求就会使用POST将其令牌发送到Python服务器。如果授予他访问权限,则使用render_template
显示主页。否则,登录名将保持不变。
但是,当用户对自己进行身份验证时,我在命令行上看到POST成功,身份验证已成功,但是页面只是停留在登录上,并且没有重定向到主页,好像第二个render_template
无效。请帮忙!
@app.route('/')
def index():
if not session.get('logged_in'):
return render_template('auth.html') # this is ok.
else:
return render_template('index.html') # this does not work
@app.route('/login', methods=['POST','GET'])
def login():
tok = request.form['token']
if (check_token(tok) == "pass"): # check_token is a function I've implemented
# to check if token is ok=pass, ko=fail
session['logged_in'] = True
else:
flash("wrong token")
return index()
答案 0 :(得分:4)
您的login
处理程序不应直接调用index
。它应该返回一个redirect到索引。
return redirect('/')
或更好:
return redirect(url_for('index'))
答案 1 :(得分:0)
我在想以下事情。
AX=0
答案 2 :(得分:0)
我已经在应用程序中使用Angular JS向烧瓶服务器发送请求,并且我意识到客户端的Angular JS在呈现页面时遇到了困难,因为它只是期望响应。
我首先尝试做。.document.write('response.data')
,它确实显示了我的主页,但是html页面上附加的脚本停止工作。
第二次尝试,我在客户端收到响应后尝试重新加载页面,并且效果很好。我不知道这是否是最好的方法,但是它确实有效。