前言
文章是为了总结使用flask进行web开发的时候遇到的一些疑惑或者bug
文章目录
QA
一、什么是蓝图,为什么要用蓝图
QA链接1
QA链接2
blueprint官方demo
一般情况下,开发小型网站应用的时候,我们只需要创建一个app.py和一个view.py然后让app跑起来即可,所有的url都统一在这个view.py文件中。使用蓝图本质上相当于将整个项目划分成多个独立的 ‘app’(共享app的配置),然后只需要实例化一个app应用实例,初始化扩展,将多个蓝图注册到app中,即可实现多个蓝图的管理。总结来说,蓝图的使用是将程序设计划分为多个模块,清晰简洁
二、flask_login模块是干什么的,如何使用
flask_login官方文档
demo文档
这个扩展提供的主要目的是帮助开发者管理登录,登出,和用户session。最大的用处就是对特定url设置登录要求,并且可以保密用户cookie。但是需要创建的ORM User模型继承自UserMixin。
一些注意事项
- 必须实现
login_manager.user_loader
方法,可以用来告诉我们当前登入的是哪个用户 - 指定登录的url
login_manager.login_view()
- 调用
login_user(user)
可以实现user用户的登入 - 调用
@login_required
会根据用户的is_authenticated()
判断用户是否被授权 current_user
这个变量表示的是当前请求的登陆用户,如果登陆了,那么它就是我们设置的 Model User 的对象
三、flask-sqlalchemy如何构建ORM模型和数据库连接?
使用sqlalchemy之前需要首先配置一些数据库连接信息,并注册到app.config中,详情可查看链接
四、app.config有什么用?如何生成app的config信息?
API文档
官网文档
简单来说就是通过app.config注册的配置信息可以在全局使用,注册方法详见API文档,可以定义一个类来统筹配置信息,要访问app的配置信息可以使用
current_app.config['name']
来得到
五、flask request是什么,有什么用?
官网链接
API文档
flask request请求
reqest是从由浏览器向服务器传送的一个http请求,里面保存了目的URL,method,args,data等信息,
注意事项
- 由于在一个线程或者进程中,flask只处理一个请求,所以request是一个全局变量
- 可以通过一些函数处理特定事件
before_request() after_request()
六、flask 消息闪现怎么用?
官网链接
总结来说就是flash提供了一个给用户反馈的机制,一般会提供一个显示消息的模板(嵌入在普通的html中)
一些注意事项
- 必须要给app设置secret_key
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
- 可以闪现多个内容, 用categories
- 重点参考官方文档
七、app.route()如果路由的url需要多个参数怎么写
@app.route('func1/<int:par1>/<float:par2>')
def func1(par1, par2):
...
八、如何使用flask提供文件下载接口
使用send_from_directory 或者send_file
官方API
需要使用绝对路径
app = Flask(__name__, static_folder='static')
@app.route('/<path:filename>')
def send_file(filename):
return send_from_directory(app.static_folder, filename)
九、如何使用flask_login进行登录认证
如何调用第三方API(不在web这个project中)
目前的想法是通过将API打包成package后,引入到项目中
继续更新中