Flask模板

一、flask-script扩展库

安装:

sudo pip3 install flask-script

简介:

   简单来说 就是一个flask终端运行的解析器 因为在代码完成以后 不能有任何的改动。

导入:

from flask_script import Manager

常用的启动项

名称作用
-hhost主机名
-pport 端口号
-ddebug 调试模式
-rreloading 加载
--threaded开启多线程

python3 manage.py runserver -h0.0.0.0 -p5000 -d -r --threaded

python3 manage.py -d -r 只开启调试模式和重新加载

使用

from flask import Flask
from flask_script import Manager
​
app = Flask(__name__)
manager = Manager(app) #实例化 Manager类
​
@app.route('/')
def index():
    return 'index.html'
​
if __name__ == '__main__':
    # app.run()
    manager.run()

二、蓝本Blueprint

概述:

     当代码越来越复杂的时候 把所有的代码 都放在一个文件中 明显是不合理的 需要根据不同模块功能进行划分 蓝本就是解决这个问题的

使用:

from flask import Blueprint

实例

import user #导入user蓝本对象
#注册user蓝本
# app.register_blueprint(user.user)
#给当前的蓝本起前缀名称
app.register_blueprint(user.user,url_prefix='/user')

在user.py中的代码

from flask import Blueprint #导入蓝本
#第一个user  因为当前是关于用户处理的蓝本 顾名思义 所有叫user user是给当前所有的视图添加装饰器来用的
user = Blueprint('user',__name__)
​
@user.route('/login/')
def login():
    return '欢迎登录'
​
@user.route('/logout/')
def logout():
    return '退出登录'

访问

带前缀的访问

127.0.0.1:5000/user/login/

没有前缀的访问

127.0.0.1:5000/login/

 

三、重定向

概述:

    从一个路由跳转到另外的一个路由地址

使用:

   redirect

导入

from flask import redirect

参数

   要跳转的路由地址

实例

@app.route('/')
def index():
    return 'index.html'
​
#重定向的测试的视图函数
@app.route('/test/')
def test():
    # return 'test'
    # return redirect('/')
    return redirect('/arg/18/')
​
#带参数的路由
@app.route('/arg/<int:age>/')
def arg(age):
    return 'age的值为{}'.format(age)
注意:

      使用redirect 重定向 是美亚任何问题 但是 一旦路由地址发生改变 所有对应当期的重定向的地址 都需要修改

 

url_for 通过视图函数 反向构造出路由地址

导入

from flask import url_for

#重定向的测试的视图函数
@app.route('/test/')
def test():
    return url_for('index') # /
    return url_for('indexx') #传递一个不存在的视图函数 则报错
    return url_for('arg',age=18) #传递一个不存在的视图函数 则报错
    return url_for('arg',age=18,name='zhangsan') #传递一个不存在的视图函数 则报错
    return redirect(url_for('arg',age=18,name='zhangsan')) #传递一个不存在的视图函数 则报错
    return redirect('/arg/18/zhangsan/') #传递一个不存在的视图函数 则报错
​
#带参数的路由
# @app.route('/arg/<int:age>/')
@app.route('/arg/<int:age>/<name>/')
def arg(age,name):
    return 'age的值为{}'.format(age)


蓝本之间的跳转

manage.py

import user #导入user蓝本对象
from car import car
#注册user蓝本
# app.register_blueprint(user.user)
#给当前的蓝本起前缀名称
app.register_blueprint(user.user,url_prefix='/user')
app.register_blueprint(car)

car.py

from flask import Blueprint,redirect,url_for
​
car = Blueprint('car',__name__)
​
​
@car.route('/show/')
def show():
    # return '查看购物车'
    return redirect(url_for('user.login'))

user.py

from flask import Blueprint #导入蓝本
​
#第一个user  因为当前是关于用户处理的蓝本 顾名思义 所有叫user user是给当前所有的视图添加装饰器来用的
user = Blueprint('user',__name__)
​
​
@user.route('/login/')
def login():
    return '欢迎登录'
​
​
@user.route('/logout/')
def logout():
    return '退出登录'

 

四、请求钩子函数

概述: 类似django的中间件

manage.py中

钩子函数功能描述
before_first_request第一次请求之前
before_request每次请求之前
after_request请求之后 没有异常
teardown_request请求之后 即使有异常出现

实例

#请求钩子函数
@app.before_first_request
def before_first_request():
    print('before_first_request')
#每次请求之前
@app.before_request
def before_request():
    # print(request.method)
    # print(request.path)
    if request.path == '/check_form/' and request.method == 'GET':
        abort(500)
    print('before_request')
#请求之后
@app.after_request
def after_request(res):
    print('after_request')
    return res
#请求之后
@app.teardown_request
def teardown_request(res):
    print('teardown_request')
    return res

在蓝本中

钩子函数功能描述
before_app_first_request第一次请求之前
before_app_request每次请求之前
after_app_request请求之后 没有异常
teardown_app_request请求之后 即使有异常出现

实例

#请求钩子函数
@car.before_app_first_request
def before_first_request():
    print('before_first_request')
#每次请求之前
@car.before_app_request
def before_request():
    if request.path == '/check_form/' and request.method == 'GET':
        abort(500)
    print('before_request')
#请求之后
@car.after_app_request
def after_request(res):
    print('after_request')
    return res
#请求之后
@car.teardown_app_request
def teardown_request(res):
    print('teardown_request')
    return res

五、模板引擎

概念:

   模板文件就是按照一定的规则进行替换 负责展示效果的html文件

模板引擎:jinja2

 

(1) 创建模板目录

templates

(2) 模板的渲染

导入

from flask render_template,render_template_string

render_template

render_template_string

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值