将数据传递到烧瓶模板

时间:2016-03-26 10:11:34

标签: python flask

在登录表单验证期间,我查询用户并将对象存储在表单实例上。我想将用户对象传递给模板。在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'

我该如何解决这个问题?

1 个答案:

答案 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一样访问它

试试这可能会有所帮助

和平