会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 166楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 167楼

image.png

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 168楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 169楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 170楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/GraphQL 174楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 175楼

image.png

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 176楼


# before_render_template的应用 
#示例业务  加载视图之前  我们对数据过滤  屏蔽一些非法字符 的示例

#引用before_render_template  我们待会儿要用这个变量!来监听我们的逻辑函数   也就是在视图渲染之前把数据完成过滤
from flask import Flask,render_template,before_render_template,g

app=Flask(__name__)

#正常访问首页 
@app.route('/')
def index():
    # data()   #这里注册的data函数 是同样的功能  
    return render_template('index.html')

def filer_msg(sender,template,context): #过滤信息函数    #曹操 中操非法! 把操换成*
# def data():
    #比如我们获取数据 加入到了g中    这里简单拿一个字符串测试 
    g.msg='曹操不啰嗦,一心要拿荆州!'
    #这里课堂老师说 他会自动调用 before_render_template.send()  方法 
    #所以不需要我们去写了
    msg=g.get('msg')  
    if msg:
        g.msg = msg.replace('操', '*')  # 把操这个字符换成* 曹操非法了!  不准拿荆州!

# before_render_template.connect(filer_msg)  #执行信号监听   回调函数 在视图渲染前执行我们的逻辑!

@app.route('/home/')
def home():
    # data()
    return render_template('home.html')
#得到结果 是在home函数视图里面 曹操也被过滤了 



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


'''
html中调用
<body>
    <p>{{ g.msg }}</p>    
</body>
显示结果:  曹*不啰嗦,一心要拿荆州!  

#吐槽 可怜的曹操  名字都非法
'''


#总结 其实我们的数据过滤方法 放在任意一个函数里面 比如我们注释的上面的data() 
#但是每次视图渲染之前 都要调用data()这个函数 太麻烦了 
# 所以选择用flask给我们提供的 视图渲染之前的钩子信号! 
 一次性帮我们解决了所有视图渲染之前的数据过滤
 
 
我的理解是 before_render_template这个钩子 
视图渲染之前  相当于是vue中的DOM加载之前的生命周期函数beforMount
所以用法也往这个上面靠。






Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 177楼


Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 179楼

image.png

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 180楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637