需要帮助理解Flask url_for()

时间:2017-04-07 18:22:41

标签: python redirect flask

我目前正在测试login()路线但是重定向有问题。 我想重定向到主索引页面。

我的身份验证蓝图如下所示:

from flask import Blueprint, render_template, request, redirect, url_for

mod = Blueprint('auth', __name__, url_prefix='/auth')


@mod.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return redirect(url_for('general.index'))
    return render_template('auth/login.html')

@mod.route('/logout', methods=['GET', 'POST'])
def logout():
    # Delete session token
    return render_template('auth/logout.html')

@mod.route('/tokeninfo')
def token_info():
    return render_template('auth/tokeninfo.html')

此外,我的general蓝图定义为:

from flask import Blueprint, render_template

mod = Blueprint('general', __name__)


@mod.route('/')
@mod.route('/index')
def index():
    return render_template('general/index.html')

但是,每次我在/login路线上提交表单时,我都会被重定向到localhost:5000/auth并收到404 page not found error

我尝试过以下方式调整return redirect(url_for('general.index')),但都没有成功:

  • return redirect(url_for(general.index))
  • return redirect(url_for('general.index'))
  • return redirect(url_for('../general.index'))

编辑:

似乎提交登录表单只是/ auth上的POST,而不是/ auth / login。这是服务器日志中显示的内容:

127.0.0.1 - - [07/Apr/2017 15:06:59] "GET /auth/login HTTP/1.1" 200 -
404 Not Found: The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.
127.0.0.1 - - [07/Apr/2017 15:07:03] "POST /auth HTTP/1.1" 404 -

我缺少什么/不理解? 提前致谢

1 个答案:

答案 0 :(得分:0)

问题在于模板!

在我的登录模板中,我之前有:

<form action="/auth" method="post" class="form-horizontal">

但是,由于我正在转换为支持蓝图的应用程序,因此我需要进行以下更改:

<form action="/auth/login" method="post" class="form-horizontal">

现在重定向正在按预期工作。