我目前正在测试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 -
我缺少什么/不理解? 提前致谢
答案 0 :(得分:0)
问题在于模板!
在我的登录模板中,我之前有:
<form action="/auth" method="post" class="form-horizontal">
但是,由于我正在转换为支持蓝图的应用程序,因此我需要进行以下更改:
<form action="/auth/login" method="post" class="form-horizontal">
现在重定向正在按预期工作。