📃内容主要来自《Flask Web开发实战:入门、进阶与原理解析》作者:李辉
😏面向群体:
- flask初学者可用来复习知识点
- 已经有flask开发经验可用来收藏备查
📱有问题随时与我联系,一起学习交流
❤️喜欢的话点个三连吧
Flask知识点总结(二)
视图函数调用请求对象request
Flask 会在请求触发后把请求信息放到request
对象里,你可以从 flask 包导入它:
from flask import request
因为它在请求触发时才会包含数据,所以你只能在视图函数内部调用它。它包含请求相关的所有信息,比如
- 请求的路径
(request.path)
- 请求的方法
(request.method)
- 表单数据
(request.form)
- 查询字符串
(request.args)
等等。
页面提示信息flash()
当我们执行某些动作后,如删除一条信息,希望前台页面提示删除成功,这时可以用上flash()
函数,用来在视图函数里向模板传递提示消息,前台模板页面中get_flashed_messages()
函数则用来在模板中获取提示消息。其用法如下:
- .py文件中
1.导入flash
from flask import flash
2.flash()函数在内部会把消息存储到 Flask 提供的 session 对象里。session 用来在请求间存储数据,它会把数据签名后存储到浏览器的 Cookie 中,所以我们需要设置签名所需的密钥:
app.config['SECRET_KEY'] = 'asdfjasnagpijoan'
3.在【视图函数】里调用,传入要显示的消息内容:
flash('删除成功')
- .html文件中
4.在【模板页面】中获取提示消息
{% for message in get_flashed_messages() %}
<div class="alert">{{ message }}</div>
{% endfor %}
删除选择POST
请求方法
为了安全的考虑,我们一般会使用POST
请求来提交删除请求,也就是使用表单来实现(而不是创建删除链接)。
<form method="post" action="{{ url_for('delete', movie_id=movie.id) }}">
<input class="btn" type="submit" name="delete" value="Delete" onclick="return confirm('Are you sure?')">
</form>
不要把密码明文存到数据库中
把密码明文存储在数据库中是极其危险的,假如攻击者窃取了你的数据库,那么用户的账号和密码就会被直接泄露。更保险的方式是对每个密码进行计算生成独一无二的密码散列值,这样即使攻击者拿到了散列值,也几乎无法逆向获取到密码。
Flask 的依赖Werkzeug
内置了用于生成和验证密码散列值的函数,werkzeug.security.generate_password_hash()
用来为给定的密码生成密码散列值,而werkzeug.security.check_password_hash()
则用来检查给定的散列值和密码是否对应。使用示例如下所示:
在存储用户信息的User
模型类添加username
字段和password_hash
字段,分别用来存储登录所需的用户名和密码散列值,同时添加两个方法来实现设置密码和验证密码的功能:
from werkzeug.security import generate_password_hash, check_password_hash
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
username = db.Column(db.String(20)) # 用户名
password_hash = db.Column(db.String(128)) # 密码散列值
def set_password(self, password): # 用来设置密码的方法,接受密码作为参数
self.password_hash = generate_password_hash(password) # 将生成的密码保持到对应字段
def validate_password(self, password): # 用于验证密码的方法,接受密码作为参数
return check_password_hash(self.password_hash, password) # 返回布尔值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/63048.html