Flask学习笔记(2)-login_page

Flask学习笔记(2)-login_page

命令行

1.cd mysite进入mysite目录。
2.git log查看git记录后按Q退出。

Code for login_page

@app.route("/login/", methods=["GET", "POST"]) 
def login():
    if request.method == "GET":
        return render_template("login_page.html", error=False)

    if request.form["username"] != "admin" or request.form["password"] != "secret":
        return render_template("login_page.html", error=True)

    return redirect(url_for('index'))

methods有post和get两种方式,post输入框后:

  • 当密码错误,error = False,显示错误提示(下文);
  • 密码正确,get到index。

在login_page里添加以下判断,当输错密码时,将显示Incorrect username or password

{% if error %}
    <div class="alert alert-warning" role="alert">
        Incorrect username or password
    </div>
{% endif %}

flask_login包

提供非常方便的login函数。以下语句创建flask_login实例,并和app关联起来。

from flask_login import login_user, LoginManager, UserMixin

app.secret_key = "something only you know"
login_manager = LoginManager()
login_manager.init_app(app)

{% if current_user.is_authenticated %} {% endif %}将评论输入框包起来,这样,未登录就看不到输入框。但实际上这仍然不完善,提交评论的时候并不会判断登录状态。用爬虫的post方法还是可以直接向网页添加评论,安全等级非常低。解决方法是在get到输入框内容前加上下面这段:

if not current_user.is_authenticated:
    return redirect(url_for('index'))

一些常用方法
current_user判断是否登录;
logout_user退出登录;
login_required登陆后可见;

上一篇:Flask学习笔记(3)-数据库迁移


下一篇:对象存储云cos + tinify + python实现压缩图片之后上传并返回外链。