Flask 路由及蓝图

作者: ropon 分类: Flask 发布时间: 2019-03-22 09:38
# 路由
# methods 配置请求允许方式 是复数也就是一个可迭代对象 ["GET", "POST"]
# endpoint 反向解析url地址的标志 默认是视图函数名 url_for()解析
# defaults 配置视图函数的默认参数值 defaults={"page": "22"}
# strict_slashes 是否严格遵循路由地址 默认是True 访问/index/1 会自动跳转到/index/1/
# redirect_to 永久重定向 301

@app.route('/index/<int:page>/', methods=['GET', 'POST'], endpoint='index')
def index(page):
    # print(page, type(page))  # 接收的默认是字符串类型
    # print(url_for('index', page=page))
    # print(get_flashed_messages(category_filter="tag"))
    # print(get_flashed_messages(category_filter="tag1"))
    return 'This is %s page' % page

# flask实例化配置
# template_folder="templates" 配置模板路径
# static_folder="static" 配置静态文件路径
# static_url_path="/static" 配置静态文件路由地址 默认是"/"+static_folder
# static_host=None 配置静态文件服务器地址
# host_matching=False 需要先配置server_name
# subdomain_matching=False 需要先配置server_name
# instance_path=None 配置另外一个flask实例的路径
# instance_relative_config=False 是否加载另外一个flask实例配置
# root_path=None 配置主模块的绝对路径 默认是项目目录

app = Flask(__name__, template_folder="templates", static_folder="static", static_url_path="/static")

# flask对象app配置
# app.debug=False 是否开启调试模式
# app.testing=False 是否开启测试模式
# app.secret_key 配置使用内置session/flash 时加密字符串
# app.permanent_session_lifetime=31 配置session生命周期 天为单位 默认31天
# app.session_cookie_name 配置在cookie中存放session加密字符串的名字

class FlaskDebug(object):
    DEBUG = True
    SECRET_KEY = "debugjiamizifuchuan"
    PERMANENT_SESSION_LIFETIME = 7
    SESSION_COOKIE_NAME = "Debug_Session"

# 通过类方式导入配置
app.config.from_object(FlaskDebug)

# 蓝图
# Blueprint 实际是一个不能被启动app flask实例
# url_prefix="/stu" 配置url前缀

from flask import Blueprint
stu = Blueprint("stu", __name__)

@stu.route("/home")
def index():
    return "这是stu首页"

# app中需要注册蓝图
app.register_blueprint(student.stu)

# 闪现
from flask import flash
# 存闪现并打个标签
flash("闪现", "tag")
flash("闪现12", "tag1")

# 通过标签取闪现
get_flashed_messages(category_filter="tag")
get_flashed_messages(category_filter=["tag", "tag1"])

# 特殊装饰器函数
# 请求进入视图之前
@app.before_request
def br1():
    print("我是before_request1")
    # return "请求不合法!"
    err = "请求不合法!"
    # return render_template("error.html", err_msg=err)

# 在响应之前
@app.after_request
def ar1(args):
    print("我是after_request11")
    print(args)
    return args

# 正常情况下 before_request 自上而下执行 after_request 自下而上执行
# 异常情况下 before_request1 after_request 自下而上执行

# 自定义404错误页
@app.errorhandler(404)
def error404(err_info):
    print(err_info)
    return render_template("404.html")

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!