python - 当我在 Flask 中使用 @login_required 时出现问题
问题描述
所以我在路线上传。我想要在上传文件登录之前。但是登录页面出现并且当我登录烧瓶时重定向我插入(因为在登录路由中定义,但如果我删除重定向烧瓶返回我无效的用户名或密码)。
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user:
if check_password_hash(user.password, form.password.data):
login_user(user, remember=form.remember.data)
return redirect(url_for('insert'))
return '<h1> Invalid username or password</h1>'
return render_template('login.html', form=form)
@app.route('/upload', methods=['GET','POST'])
@login_required
def upload():
if request.method == "POST":
#I DON'T PUT THE ENTIRE CODE BECAUSE IT DOESN'T MAKE SENSE
在那之后,当我登录(但在登录路径中)时,我希望烧瓶重定向我插入。所以基本上当我使用 login_required 时,我希望保持放置装饰器的路线。
解决方案
如果您想在登录后重定向回上传,请利用装饰器添加的next
参数。@login_required
使用它看起来像
login_user(...)
next_page = request.args.get('next')
if next_page is not None and is_safe_url(next_page):
return redirect(next_page) # this'll get you back
else:
return direct(...) # some fallback page
但是请参阅此处的 Flask Login 文档中的示例以获取完整的详细信息。
推荐阅读
- plsql - PLSQL 过程将数据从多个表加载到维度表中
- c++ - 函数总是返回 1
- sql - 可以加快这个查询?
- javascript - 如何在 UWP 安装的应用程序中添加一些源代码?
- excel - 从 A 列中的字符串(即段落)中删除特定的词性和标点符号,然后在 B 列中输入结果
- python - 如何在 anaconda 中安装 pygame 1.9.4
- regex - 如何在 perl6 正则表达式插值中使用联结?
- wampserver - Wampserver 不更改 WEB 的 PHP 版本(不是 CLI)
- javascript - Wordpress 电子邮件表单不起作用;Wordpress 电子邮件功能已验证
- r - opencpu 应用程序未部署在公共服务器上