Python-Flask中的render_template不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-Flask中的render_template不起作用相关的知识,希望对你有一定的参考价值。

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

我的情况很简单:用户输入一个令牌来验证自己。一旦他点击身份验证,角度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()  
答案

你的login处理程序不应该直接调用index。它应该将redirect返回到索引。

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")
另一答案

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

以上是关于Python-Flask中的render_template不起作用的主要内容,如果未能解决你的问题,请参考以下文章

python-flask复习——- flask中的CBVwerkzeug+上下文初步解读偏函数和线程安全

Python-flask下载功能实现

Python-flask下载功能实现

Python-flask下载功能实现

python-flask复习——Flask —SQLAlchemy

python-flask复习—— 装饰器的坑及解决办法flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件重定义错误页面)