2016-03-26 6 views
-2

ログインフォームの検証中に、私はユーザーを照会し、そのフォームインスタンスにオブジェクトを格納します。私はテンプレートにユーザーオブジェクトを渡したいと思います。私はにリダイレクトしていフラスコテンプレートにデータを渡す

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) 

Python, Flask - Passing Arguments Into redirect(url_for())に続いて、私が試した

@blueprint.route("/profile") 
@login_required 
def profile(): 
    return render_extensions("users/profile.html") 

と再び私はprofile.htmlテンプレートにユーザーオブジェクトを渡したいです。

私が取得しています:

TypeError: redirect() got an unexpected keyword argument 'userobj' 

がどのように私はこの問題を解決することができますか?

+1

あなたはそのリンクされた質問のアドバイスにまったく従っていないようです。始めに、パラメータは 'redirect'ではなく' url_for'です。第二に、答えは明示的にあなたのターゲットハンドラがあなたが実際にはないパラメータを受け入れなければならないことを指摘しています。 –

+0

それを指摘してくれてありがとう。私の場合、フラスコログインのcurrent_userにアクセスできたことがわかりました。私は – user61629

答えて

1

あなたが正しく行っていない可能性があります。で提供されていますcurrent_userを通じて入手可能ですログインしているユーザーは、from flask.ext.login import current_user

これは私がテンプレートにcurrent_user.username同じようにアクセスすることができる午前インデックスビューで

@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) 

をしたかである

これを試してみてください

平和
+0

を使用して終了しました。ありがとうございました。 – user61629

関連する問題