在flask应用程序的不同选项卡下加载不同的页面

时间:2016-01-27 16:51:19

标签: python flask twitter-bootstrap

我想在每个标签下呈现3个不同的页面/视图。

user.html
<ul id="tabs" class="nav nav-tabs"  data-tabs="tabs">
    <li role="presentation" class="active"><a href="#tab1" data-toggle="tab">edit profile</a></li>
    <li role="presentation" ><a href="#tab2" data-toggle="tab">change password</a></li>
    <li role="presentation" ><a href="#tab3" data-toggle="tab">change email</a></li>
</ul>
<div class="tab-content">
    <div class="tab-pane active" id="tab1">
        <p>User profile edit</p>
    </div>
    <div class="tab-pane" id="tab2">
        {% include 'flask_user/change_password.html' %}
    </div>
    <div class="tab-pane" id="tab3">
        {% include 'change_email.html' %}
    </div>
</div>

,视图如下:

@app.route('/profile/<int:agent_id>', methods=['GET', 'POST'])
def user_profile(agent_id):
form = ChangePasswordForm()
if form.validate_on_submit():
    change_password()
return render_template('user.html', form=form)

目前只发送一个用于#tab2的表单。但如果我发送所有3个表单,userProfileForm(),changeUserEmailForm()和ChangePasswordForm() 那么处理POST请求时会很复杂。

还有其他方法可以让它发挥作用吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您不必为这三种表单回复到相同的路线。设置三个不同的路由来处理POST后备并将每个表单的action属性设置为适当的路由。