Python-Flask中的render_template无法正常工作

时间:2018-09-17 13:05:24

标签: python flask routing

我实际上是用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()  

3 个答案:

答案 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页面上附加的脚本停止工作。 第二次尝试,我在客户端收到响应后尝试重新加载页面,并且效果很好。我不知道这是否是最好的方法,但是它确实有效。