Flask无法找到用户对象

时间:2017-07-02 09:09:20

标签: python web-applications flask flask-login

我正在制作一个网络应用程序,并且我已经使用Flask-Login处理登录的以下代码(为简洁而编辑):

from flask_login import LoginManager, login_user, logout_user, login_required

login_manager = LoginManager()
login_manager.init_app(app)

@login_manager.user_loader
def load_user(user_id):
    return User.query.filter_by(user_id=user_id).first()

@app.route('/')
@login_required
def home():
        return user.first_name

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        try:
            email = request.form.get("email")
            user = User.query.filter(User.email == email).first()
            if user.is_correct_password(request.form.get("password")):
                login_user(user)
                return redirect(url_for("home"))
            else:
                return error("Login Failed")
        except:
            return error("Unable to log in.")

    else:
        return render_template("login.html")

但是,我一直得到NameError: global name 'user' is not defined,即使我确定我已定义user因为我能够通过@login_required。 (当我退出并尝试访问主页时,我被告知我未经授权)。

我很感激我能得到的任何帮助。

非常感谢!

2 个答案:

答案 0 :(得分:2)

您的program test_func_array implicit none type pp procedure(func) ,pointer ,nopass :: f =>null() end type pp interface function func(x) real :: func real, intent (in) :: x end function func end interface type(pp) :: func_array(4) func_array(1)%f => exp func_array(2)%f => tan func_array(3)%f => cos func_array(4)%f => sin print*,func_array(1)%f(1.) print*,func_array(2)%f(1.) print*,func_array(3)%f(0.) print*,func_array(4)%f(0.) end program test_func_array 视图存在问题:home未定义。我认为您打算使用Flask-Login user

current_user

答案 1 :(得分:0)

不要忘记导入

  

从flask_login导入current_user

from flask_login import current_user
@app.route('/', methods = ['POST', 'GET'])
@app.route('/index', methods = ['POST', 'GET'])
@login_required
def index():
   return render_template('index.html',user={"id":current_user.id, "name": current_user.name, "password":current_user.password})

并在模板上访问

    {% if user %}
    <h3>Greetings {{user}}</h3>
{% endif %}

      <table class="table table-striped" >
        <thead>
          <tr>
            <th scope="col">Name</th>
            <th scope="col">Value</th>
          </tr>
        </thead>
        <tbody>
{% for key, value in user.items() %}
  <tr>
    <th scope="row">{{ key }}</th>
    <td>{{ value }}</td>
  </tr>
  {% endfor %}
</tbody>
</table>