Falsk的模板分配和蓝图、定制错误信息、 和补充
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的模板分配和蓝图、定制错误信息、 和补充的更多相关文章
- ThinkPHP第八天(U函数放置在外部JS不会被解析,错误界面定制,错误信息变量)
1.JS外部文件中U函数不会被解析,内部JS代码可以被解析. 2.halt. _404可以定制错误模板,在配置文件中配置 TMPL_EXCEPTION_FILE =>'./Public/Tpl/ ...
- Django-Form表单(验证、定制、错误信息、Select)
Django form 流程 1.创建类,继承form.Form 2.页面根据类的对象自动创建html标签 3.提交,request.POST 封装到类的对象里,obj=UserInf ...
- thinkphp 定制错误页面
在前台配置文件里加上: 'TMPL_EXCEPTION_FILE' => '.Public/tpl/error.html',// 异常cuowu页面的模板文件 然后在Public下新建一个tpl ...
- ruby -- 进阶学习(九)定制错误跳转404和500
在开发阶段,如果发生错误时,都会出现错误提示页面,比如:RecordNotFound之类的,虽然这些错误方便开发进行debug,但是等产品上线时,如果还是出现这些页面,对于用户来说是很不友好的. 所以 ...
- SpringBoot定制错误的Json数据
(1)自定义异常处理&返回定制Json数据 @ControllerAdvice public class MyExceptionHandler { @ResponseBody @Excepti ...
- SpringBoot定制错误页面
(1)有模板引擎的情况下,例如404错误,将会在thymeleaf的templates的error下寻找404.html,如果找不到再寻找4xx.html *所有4开头的错误状态码如果找不到特定的ht ...
- springboot 定制错误页面
项目中经常遇到的异常情况 400-Bad Request 401-Unauthorized If the request already included Authorization credenti ...
- 【Laravel5】 定制错误页面
laravel5 所有异常错误都由类 App\Exceptions\Handler 处理,该类包含两个方法: report 和 render . 这里我们只看 render ...
- Spring boot错误处理以及定制错误页面
如果是浏览器访问,返回错误页面 注意浏览器发送请求的请求头: 注意区别其他客户端哦比如 postman 如果是其他客户端,返回一个Json数据 原理可以参照ErrorMvcAutoConfigura ...
随机推荐
- python如何帮我在投资中获取更高收益
搞技术的大都比较纯粹,比较实在,除了工资之外基本就没有别的收入了(少部分人能接外包赚外块).或许是迫于生活的压力,或许是不甘于固定的工资,或许是出于技术人骨子里的好奇,亦或是这几年关于理财投资的大力宣 ...
- spring-data-redis配制
1:单redis模式下 properties文件 配制 #JedisPoolConfig的参数 #最大连接数 redis.pool.maxTotal= #最大空闲时间 redis.pool.maxId ...
- 接口文档管理神器RAP2安装和部署
目录 一 RAP2 二 RAP2 安装需要的环境 2. 1 Node.js 安装: 2. 2 Mysql 5.7+ 安装 2 .3 Redis 安装见文章 2. 4 后端 rap2-delos 安装 ...
- 忽略“Signal: SIGSEGV (Segmentation fault)”
1. touch ~/.gdbinit 2. 在.gdbinit文件中添加“handle SIGSEGV nostop noprint pass”
- Go url编码和字符转码
类似php中的urlencode 和htmlspecialchars: package main import ( "fmt" "html" "net ...
- logback 日志打印输出
slf4j 其实是一个日志的抽象层, 其本质仍然需要真正的实现 他可以解决代码中独立于任意特定的日志类库, 可以减少很多维护日志的麻烦, 除此之外, 还有占位符的特性, {}, 类似于String#f ...
- <转载> 58到家数据库设计规范
原文地址: http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959906&idx=1&sn=2cbdc66cf ...
- 剑指offer64:滑动窗口的最大值
题目描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4, ...
- KafkaOffsetMonitor监控kafka
KafkaOffsetMonitor监控kafka 1. KafkaOffsetMonitor是一个可以用于监控Kafka的Topic及Consumer消费状况的工具,其配置和使用特别的方便.源项目G ...
- 我是怎么从安卓到php再成为前端开发工程师的
记得我下定决心学Android(安卓)是17年的暑假,暑假前,学校组织了一次集训,美其名曰帮我们巩固知识,实际上就是学校和长沙的培训学校某牛达成了合作,教我们一些基础知识,然后集训完建议那些在学校没学 ...