在base.html中用于Flask登录表单的Bootstrap模式而不在每个视图函数中发送表单?

Car*_*elo 2 python flask twitter-bootstrap bootstrap-modal

我对Flask框架很陌生,以Miguel Grinberg的书《 Flask Web开发》为参考。到目前为止,我有一个用于处理登录的视图功能,我不知道如何使用由位于navbar(bootstrap)上的登录按钮激活的模式来有效地实现此功能,因为这是在domain.com/login中处理的。我能想到的唯一解决方案是删除此视图并在每个视图函数中复制代码,我确信这根本不是一个好的解决方案。

from .forms import LoginForm
from flask.ext.login import login_user

@auth.route('/login/', methods = ['GET', 'POST'])
def login():
    form=LoginForm()
    if form.validate_on_submit():
        user =  User.query.filter_by(username=form.username.data).first()
        if user is not None and user.verify_password(form.password.data):
            login_user(user, form.remember_me.data)
            flash("login success")
            return url_for(".index",username=user.username))
        flash("Invalid username or password.")
    return render_template('auth/login.html',form=form)
Run Code Online (Sandbox Code Playgroud)

dor*_*oru 5

您可以使用模式并将action表单的属性传递给处理程序函数/login/。像这样:

<div class="modal hide" id="myModal">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal">x</button>
    <h3>Login to MyWebsite.com</h3>
  </div>
  <div class="modal-body">
    <form method="post" action='/login/' name="login_form">
      <p><input type="text" class="span3" name="eid" id="email" placeholder="Email"></p>
      <p><input type="password" class="span3" name="passwd" placeholder="Password"></p>
      <p><button type="submit" class="btn btn-primary">Sign in</button>
        <a href="#">Forgot Password?</a>
      </p>
    </form>
  </div>
  <div class="modal-footer">
    New To MyWebsite.com?
    <a href="#" class="btn btn-primary">Register</a>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)