在登录表单验证期间,我查询用户并将对象存储在表单实例上。我想将用户对象传递给模板。在Python, Flask - Passing Arguments Into redirect(url_for())之后,我尝试了:
def home():
form = LoginForm(request.form)
# Handle logging in
if request.method == 'POST':
if form.validate_on_submit():
login_user(form.user)
flash("You are logged in.", 'success')
redirect_url = request.args.get("next") or url_for("user.profile")
return redirect(redirect_url, userobj=form.user)
我重定向到:
@blueprint.route("/profile")
@login_required
def profile():
return render_extensions("users/profile.html")
我想再次将用户对象传递给profile.html模板。
我得到了:
TypeError: redirect() got an unexpected keyword argument 'userobj'
我该如何解决这个问题?
答案 0 :(得分:1)
你可能做得不对。已登录的用户可通过current_user
from flask.ext.login import current_user
获取
这就是我做的事情
@auth.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user is not None and user.verify_password(form.password.data):
login_user(user, form.remember_me.data)
return redirect(request.args.get('next') or url_for('main.index'))
flash('Invalid username or password')
return render_template('auth/login.html', form=form)
在索引视图中,我可以像模板中的current_user.username
一样访问它
试试这可能会有所帮助
和平