博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Falsk的模板分配和蓝图、定制错误信息、 和补充
阅读量:6302 次
发布时间:2019-06-22

本文共 2938 字,大约阅读时间需要 9 分钟。

Flask的模板渲染:

Flask的模板在进行渲染的时候是默认选则templates下的html文件 我们可以在实例化app的时候,指定文件来进行选择:

模板渲染更改文件夹:template_folder = 要指定的文件夹

app = Flask(__name__,template_folder="templ")  # 把你的指定html模板改为templ文件夹下

 

 

static_folder 是指定你的静态文件指定的文件夹,static_url_path 是你的前端界面访问的地址

app = Flask(__name__,template_folder="templ",static_folder = "statics",static_url_path="/app")# 实例化一个flask对象   static_folder 指定你的静态文件的读取存放的文件夹  ,static_url_path 是你的前端界面访问的名称要一致

 ststic_folder是指定静态文件的路径 

static_url_path是指定你静态文件的访问url

何为蓝图 其实就是展开设计 进行更多的设计,说白了就是对你的app中的内容进行扩展

它的作用就是将 功能与主服务分开。

我们可以在你的蓝图中新增功能,然后在你的主功能区中对你的蓝图进行导入 然后你的主功能区就有了你的蓝图的功能

 

 

蓝图文件内:

from flask import Blueprint,render_template,request  #Blueprint是你的蓝图模块addstu = Blueprint(  # 实例化蓝图对象                    "addstu",__name__,   # 这个addstu的名字可以是随便起的 主要是为了让我们方便阅读与查看                   template_folder="../addtempl",                   static_folder="../statics",                   static_url_path="/statics")    # 蓝图的文件读取设置@addstu.route("/add_stu/",methods = ["GET","POST"])  # 也是路由分发def add_stu():    if request.method == "GET":        return render_template("add.html")

 

然后在你的主功能区先导入你的蓝图的文件:

from seve import add_stu  #导入你的文件

导入你的蓝图:app.register_blueprint("蓝图文件")

app.register_blueprint(add_stu.addstu)  # 导入你的蓝图add_stu.addstu

如果你要访问你的 蓝图中的函数  ,然后的你的ur后面跟着的就是你的蓝图内路由分发的url就是:

http://127.0.0.1:9768/add_stu/  # 蓝图中的地址

切记:你的蓝图实例化的对象和蓝图中的函数名不可相同

 

其实我们可以把蓝图来理解为django中我们创建的一个个的app

 

 

 

请求拓展:(类似于Django的中间件)

Flask的中间件:

@app.before_request 程序执行其他函数的时候先走里进行判断

每一次先执行其他的函数的时候都会先执行这个进行判断 就好比django的中间件进行校验

@app.before_requestdef once():    print("这个是程序执行的时候")    if request.path == "/login/":  # l类似于中间件的白名单        return None    # user = session.get("user")    if session.get("user"):        return None    else:        return redirect("/login/")

 

@app.after_request 你的flask结束的时候要走它  所有的结束之后要经过after_request再渲染到界面

@app.after_requestdef after_re(response):    print("现在我要出去了")    return response

执行流程:

这个是程序执行的时候现在我要出去了这个是程序执行的时候127.0.0.1 - - [06/Sep/2018 20:16:39] "GET /login/ HTTP/1.1" 200 -现在我要出去了

 

就是你的每一个请求都会先走before_request 然后结束之前都会走after_request 这个就是Flask的中间件可以分开只有before_request 或者after_request

 

after_request的执行结果和Django的1.7之前的一样 如果出错 或者想出去会从最下面开始先执行,

@app.before_requestdef once():    print("这个是程序执行的时候")    if request.path == "/login/":  # l类似于中间件的白名单        return None    # user = session.get("user")    if session.get("user"):        return None    else:        return redirect("/login/")@app.after_request  #最后在执行这个def after_re(response):    print("现在我要出去了")    return response@app.after_request   #当结束的时候先执行这个  因为它在最下面def after_ll(response):    print("现在我才是第一个要出去的")

 

 

 

定制错误信息: @ app.errorhandler()

当你的错误的时候就可以这样来定制了页面

@ app.errorhandler(110)def error_404(arg):    return "页面找不到"

 

 

 

 

闪现 : flash :

本质:flash是基于session创建的,flash支持往里边放值,只要你取一下就没有了,相当于pop了一下。不仅吧值取走,而且吧session里的东西去掉

 

from flask import Flask,session,Session,flash,get_flashed_messages v = get_flashed_messages()  #取值清空你的闪现中存放的值

 

转载于:https://www.cnblogs.com/zhaoyunlong/p/9600501.html

你可能感兴趣的文章
java-学习8
查看>>
AOP动态代理
查看>>
Oracle序列
查看>>
xcodebuild命令行编译错误问题解决
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
LeetCode----67. Add Binary(java)
查看>>
母版页 MasterPage
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
记录自写AFNetWorking封装类
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
【转】LUA内存分析
查看>>
springboot使用schedule定时任务
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>
XDUOJ 1115
查看>>
PHP学习(四)---PHP与数据库MySql
查看>>
模版方法模式--实现的capp流程创建与管理
查看>>
软件需求分析的重要性
查看>>
eclipse的scala环境搭建
查看>>