Python Flask中的render_模板不工作

Python Flask中的render_模板不工作,python,flask,routing,Python,Flask,Routing,实际上,我正在使用Flask创建一个应用程序,我遇到了有关路由的问题 我的情况很简单:用户输入一个令牌来验证自己。单击authenticate后,HTTP请求使用POST将其令牌发送到Python服务器。在那里,如果授予他访问权限,则使用render_template显示主页;否则,登录将保持静止 但是,当用户对自己进行身份验证时,我在命令行上看到POST成功,身份验证成功,但是页面只是在登录时被卡住,并且没有重定向到主页,好像第二个呈现模板不起作用。请帮忙 @app.route('/') de

实际上,我正在使用Flask创建一个应用程序,我遇到了有关路由的问题

我的情况很简单:用户输入一个令牌来验证自己。单击authenticate后,HTTP请求使用POST将其令牌发送到Python服务器。在那里,如果授予他访问权限,则使用
render_template
显示主页;否则,登录将保持静止

但是,当用户对自己进行身份验证时,我在命令行上看到POST成功,身份验证成功,但是页面只是在登录时被卡住,并且没有重定向到主页,好像第二个
呈现模板
不起作用。请帮忙

@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()  

您的
登录
处理程序不应直接调用
索引
。它应该返回一个到索引的值

return redirect('/')
或者更好:

return redirect(url_for('index'))

您的
登录
处理程序不应直接调用
索引
。它应该返回一个到索引的值

return redirect('/')
或者更好:

return redirect(url_for('index'))

我想到了以下几点

@app.route('/')
def index():
    if not session.get('logged_in'):
        return return redirect(url_for('login'))
    else:
        return render_template('index.html')  

@app.route('/login', methods=['POST','GET'])
def login():
    if request.method = "POST":
        tok = request.form['token']

        if (check_token(tok) == "pass"):  
            session['logged_in'] = True
        return redirect(url_for('index'))

        else:
            flash("wrong token")

    return render_template("login.html")

我想到了以下几点

@app.route('/')
def index():
    if not session.get('logged_in'):
        return return redirect(url_for('login'))
    else:
        return render_template('index.html')  

@app.route('/login', methods=['POST','GET'])
def login():
    if request.method = "POST":
        tok = request.form['token']

        if (check_token(tok) == "pass"):  
            session['logged_in'] = True
        return redirect(url_for('index'))

        else:
            flash("wrong token")

    return render_template("login.html")

我在我的应用程序中使用Angular JS向我的flask服务器发送请求,我意识到我的客户端Angular JS在呈现页面时有困难,因为它只是在等待响应。 我第一次试着做
document.write('response.data')
它确实显示了我的主页,但附加在html页面上的脚本停止工作。
第二次尝试,我在客户端收到响应后尝试重新加载页面,效果很好。我不知道这是否是最好的方法,但它确实有效。

我在应用程序中使用Angular JS向flask服务器发送请求,我意识到客户端Angular JS在呈现页面时遇到困难,因为它只是在等待响应。 我第一次试着做
document.write('response.data')
它确实显示了我的主页,但附加在html页面上的脚本停止工作。
第二次尝试,我在客户端收到响应后尝试重新加载页面,效果很好。我不知道这是否是最好的方法,但确实有效。

我尝试了两种方法,但问题相同<代码>@app.route('/')def index():if not session.get('logged_'):return render_template('auth.html'):return render_template('index.html')@app.route('/login',methods=['POST','get'])def login():tok=request.form['token if(check_token(tok)='pass session['logged_']=True;否则:flash(“错误令牌”)返回重定向(url_for('index'))但是,如果我在浏览器上手动将url设置为
http://127.0.0.1:5000/
在我成功进行身份验证后,这确实给了我“index.html”页面……有什么想法吗?我尝试了两种方法,但问题相同<代码>@app.route('/')def index():if not session.get('logged_'):return render_template('auth.html'):return render_template('index.html')@app.route('/login',methods=['POST','get'])def login():tok=request.form['token if(check_token(tok)='pass session['logged_']=True;否则:flash(“错误令牌”)返回重定向(url_for('index'))但是,如果我在浏览器上手动将url设置为
http://127.0.0.1:5000/
在我成功通过身份验证后,这确实给了我“index.html”页面…有什么想法吗?但是,如果我手动将浏览器上的url设置为
http://127.0.0.1:5000/
在我成功通过身份验证后,这确实给了我“index.html”页面…有什么想法吗?请参阅以下帖子:。认证成功后需要重定向。您可能想尝试从
Flash登录
library。但是,如果我手动将浏览器上的url设置为
http://127.0.0.1:5000/
在我成功通过身份验证后,这确实给了我“index.html”页面…有什么想法吗?请参阅以下帖子:。认证成功后需要重定向。您可能想从中尝试
Flash登录
library。谢谢,但仍然没有。我在CLI上看到了更改页面的GET请求,但在浏览器上没有看到任何更改…在我的示例中可能存在缩进错误。索引的返回重定向url应上移4个空格。但不确定这是否解决了你的问题。如果在调试模式下运行,请添加应用程序日志。谢谢,但仍然没有。我在CLI上看到了更改页面的GET请求,但在浏览器上没有看到任何更改…在我的示例中可能存在缩进错误。索引的返回重定向url应上移4个空格。但不确定这是否解决了你的问题。如果在调试模式下运行,请添加应用程序日志。