利用Flask搭建一个简易的博客网站(2)

app.py 的实现和功能

app.py 在整个project 中主要作用是把各种插件添加进Flask。大致就是 创建一个Flask对象,并把所有插件注册到这个对象上,即一个插件控制器。

1
2
import sys
sys.path.append('.')

这里我们首先import各种flask 的插件:
1. pagedown是comment需要的markdown 插件
2. Flask是flask本体,不说了吧
3. bootstrap 是一个把各种常用blocks(即各种CSS和JS的模板)包含的package,这样在template中可以直接extend bootstrap 例如:

1
2
{% extends 'bootstrap/base.html' %}
{% from 'bootstrap/wtf.html' import quick_form %}

这样template就可以方便地调用这些模板

4. moment 是一个方便利用时间的插件
5. migrate 是为database提供版本备份的插件。功能可以等价于 git 之于code
6. login是一个管理用户登录的插件

app中的 register_blueprint函数把blueprint_list中所有的视图module(包含所有视图函数)注册到flask 对象上。

register_extensions函数把所有上述的插件注册到对象上,之后在我们创建了flask对象后,调用这个函数即可。

1
2
3
4
@login_manager.user_loader
def user_loader(id):
# 只有主键才可以使用 query.get 方法查询
return User.query.get(id)

这个函数会告诉login_manager登录用户的信息, 即callback(回调函数)这样系统便能识别登录用户的身份。返回的是user对象。

create_app 函数则是用来 初始化对象,添加相关配置, 并注册插件和蓝图,最后返回对象。

关于添加相关配置的方法,我在下一章会提到。

这样一个最为重要的一个环节就完成了![]( ̄▽ ̄)*庆祝一下吧!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!