Flask(6):Flask的闪现+Flask的蓝图

一、Flask的闪现

需求:比如我们有个页面x1,然后我们访问这个页面,页面会生成一个消息,但是这个消息不在x1页面显示,我们用户访问第二个页面x2,然后刚刚生成的消息显示在x2这里

方法1:使用session

from flask import Flask, session

app = Flask(__name__)
app.secret_key='adassasafsa'

@app.route('/x1/')
def x1():
    session['msg'] = '哈哈哈哈哈'
    return 'x1函数'

@app.route('/x2/')
def x2():
    msg = session.pop('msg')
    return msg

if __name__ == '__main__':
    app.run(debug=True)

运行,x2页面的结果

在这里插入图片描述

方法2:flash模块

from flask import Flask, flash, get_flashed_messages,session

app = Flask(__name__)
app.secret_key='adasasa'

@app.route('/x1/')
def x1():
    flash('哈哈哈哈')
    return 'x1函数'

@app.route('/x2/')
def x2():
    msg = get_flashed_messages()
    print(msg)
    return 'x2函数'

if __name__ == '__main__':
    app.run(debug=True)

注意:

  • 此方式基于session,必须配置好session的secret_key
  • 此方式效果同上,但是此方式如果连续访问多次x1,那么访问x2的时候会显示多次结果的列表,但是只要访问一次x2会将列表的信息都拿出来,再访问x2结果为空列表

连续访问两次x1,第一次访问x2
在这里插入图片描述

第二次访问x2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E5ajXa1c-1596512743022)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596510174145.png)]

二、Flask的蓝图

功能1:创建合理的目录

flask就相当于我们对于大型的flask项目,创建合理的文件夹,例如创建一个新项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FqXBvb7R-1596512743024)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596511320414.png)]

各文件的内容如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uq9EDxcZ-1596512743026)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596511403551.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQWx9JvG-1596512743026)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596511466175.png)]

在view文件夹创建两个视图文件test1.py和test2.py文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X0VnSnB1-1596512743028)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512081123.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tV4f4ILt-1596512743028)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512102713.png)]

再修改init文件,将创建的两个蓝图和init关联起来,相当于init里负责分发视图函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2865vxf4-1596512743028)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512130577.png)]

进入manage.py点击运行,即可访问这些网址

功能2:添加路由前缀

给每一个视图的url前加入自己的前缀

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lPBbPrGg-1596512743030)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512420675.png)]

点击运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bNEh5Zl1-1596512743030)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512459058.png)]

功能3:局部装饰器

在test1文件里加入一个before_request函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XVRUFmtc-1596512743031)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512609149.png)]

运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iKegRlhn-1596512743032)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512646137.png)]

不会影响test2的视图函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9kU7UM5C-1596512743032)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1596512680105.png)]

功能4:每个蓝图可以写自己的模板文件和静态文件

在这里插入图片描述
但是init文件寻找模板和静态文件的顺序:先去init的app目录找,找不到对应的文件再去从上往下的蓝图里的模板和静态资源找

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40558166/article/details/107783294