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
登陆后可见;