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_request
def 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_request
def 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_request
def 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()  #取值清空你的闪现中存放的值

Falsk的模板分配和蓝图、定制错误信息、 和补充的更多相关文章

  1. ThinkPHP第八天(U函数放置在外部JS不会被解析,错误界面定制,错误信息变量)

    1.JS外部文件中U函数不会被解析,内部JS代码可以被解析. 2.halt. _404可以定制错误模板,在配置文件中配置 TMPL_EXCEPTION_FILE =>'./Public/Tpl/ ...

  2. Django-Form表单(验证、定制、错误信息、Select)

      Django form 流程 1.创建类,继承form.Form 2.页面根据类的对象自动创建html标签 3.提交,request.POST       封装到类的对象里,obj=UserInf ...

  3. thinkphp 定制错误页面

    在前台配置文件里加上: 'TMPL_EXCEPTION_FILE' => '.Public/tpl/error.html',// 异常cuowu页面的模板文件 然后在Public下新建一个tpl ...

  4. ruby -- 进阶学习(九)定制错误跳转404和500

    在开发阶段,如果发生错误时,都会出现错误提示页面,比如:RecordNotFound之类的,虽然这些错误方便开发进行debug,但是等产品上线时,如果还是出现这些页面,对于用户来说是很不友好的. 所以 ...

  5. SpringBoot定制错误的Json数据

    (1)自定义异常处理&返回定制Json数据 @ControllerAdvice public class MyExceptionHandler { @ResponseBody @Excepti ...

  6. SpringBoot定制错误页面

    (1)有模板引擎的情况下,例如404错误,将会在thymeleaf的templates的error下寻找404.html,如果找不到再寻找4xx.html *所有4开头的错误状态码如果找不到特定的ht ...

  7. springboot 定制错误页面

    项目中经常遇到的异常情况 400-Bad Request 401-Unauthorized If the request already included Authorization credenti ...

  8. 【Laravel5】 定制错误页面

    laravel5   所有异常错误都由类   App\Exceptions\Handler    处理,该类包含两个方法:   report   和   render . 这里我们只看 render  ...

  9. Spring boot错误处理以及定制错误页面

    如果是浏览器访问,返回错误页面 注意浏览器发送请求的请求头:  注意区别其他客户端哦比如 postman 如果是其他客户端,返回一个Json数据 原理可以参照ErrorMvcAutoConfigura ...

随机推荐

  1. tar 命令压缩时报错 tar: Removing leading `/' from member names

    在使用tar命令进行压缩打包的时候我们常常会遇到下面的错误.虽然它不会影响我们最后的压缩打包,但是间接说明了我们的命令是有问题的.接下来我们来看看解决的方法. 报错内容: [root@haha ~]# ...

  2. HTTP协议常用标准状态码含义

     HTTP协议常用标准状态码含义 状态码    含义 备注 200 请求已完成 2XX状态码均为正常状态码返回. 300 多种选择 服务器根据请求可执行多种操作.服务器可根据请求者 (User age ...

  3. centos7防暴力破解五种方法

    什么是暴力破解,简单来说就是对一个服务器进行无数次尝试登陆,并用不同的密码进行登陆直到可以登陆成功.暴力破解的基本步骤可以分为以下几步: 1. 找到对应的linux服务器    Ip地址 2.扫描端口 ...

  4. mongodb-地理坐标存储查询

    mongodb可支持空间地理搜索: 查询器 $geoWithin Selects geometries within a bounding GeoJSON geometry. The 2dsphere ...

  5. 01 JDBC的问题

    jdbc编程步骤: 1. 加载.注册数据库驱动   DriverManager 2. 创建并获取数据库链接   Connection 3. 创建jdbc statement/preparedState ...

  6. JavaScript try...catch用法

    一.用法 try...catch语句用了处理代码中可能出现的错误信息,将要进行测试的代码块放在try中,如果代码出现异常,则会被catch捕获 其格式如下: <script> try{ / ...

  7. IOS应用图标尺寸

    Table 41-1Size (in pixels) of custom icons and images Asset iPhone 6 Plus (@3x) iPhone 6 and iPhone ...

  8. 阿里云提示ECS服务器存在漏洞处理方法

    1.阿里云提供生成修复命令,但是这个只提供给企业版,即收费的: 2.自己手动修复的话, 采用软件升级一般都可以解决.除了提示带kernel的高危漏洞的,其他的不需要重启实例即可修复. 有kernel的 ...

  9. JBoss 实战(2)

    转自:https://www.cnblogs.com/aiwz/p/6154591.html JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Contai ...

  10. 小白学习之Code First(三)

    上下文Context类中的base构造器的几个方法重置(1.无参 2.database name 3 . 连接字符串) 无参:如果基类base方法中无参,code first将会以 :{Namespa ...