处理没有@login_required的下一个参数

时间:2015-01-29 22:36:43

标签: python flask

用户位于包含评论的页面。如果它们已经被放入,那么他们可以添加自己的评论。如果没有,则有一个指向登录页面的链接。 他们登录后我想让用户回到登录前页面。

我试过了

<a href="{{url_for('login', next = url_for('product_details', product=prod.id)')}}" role="button">Login</a>

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        #login the user...
        if request.args.get('next'):
            return redirect(request.args.get('next'))
        else:
            # proceed as usual...

这不起作用。首先,在request.args.get('next')之后,form.validate_on_submit()消失了。除此之外,我的方法感觉不对。从next参数重定向的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以将“next”参数放在会话中,然后在用户登录后从会话中弹出该值。

@app.route('/login', methods=['GET', 'POST'])
def login():

    if request.args.get('next'):
        session['next_url'] = request.args.get('next')

    form = LoginForm()
    if form.validate_on_submit():
        #login the user...
        if session.get('next_url'):
            next_url = session.pop('next_url')        
            return redirect(next_url)
        else:
            # proceed as usual...