1.endpoint参数,解决视图函数重名问题(包括装饰后重名问题)

  http://www.cnblogs.com/eric-nirnava/p/endpoint.html

  • 每个应用程序app都有一个view_functions,这是一个字典,存储endpoint-view_func键值对。add_url_rule的第一个作用就是向view_functions中添加键值对(这件事在应用程序run之前就做好了)
  • 每个应用程序app都有一个url_map,它是一个Map类(具体实现在werkzeug/routing.py中),里面包含了一个列表,列表元素是Role的实例(werkzeug/routing.py中)。add_url_rule的第二个作用就是向url_map中添加Role的实例(它也是在应用程序run之前就做好了)
    {'static': <bound method _PackageBoundObject.send_static_file of <Flask 'myflask'>>, 'add.add': <function stu_add at 0x000000000399F0D0>, 'update.update': <function stu_update at 0x0000000003AC8730>, 'delete.delete': <function stu_delete at 0x0000000003AC8840>, 'reg.reg': <function View.as_view.<locals>.view at 0x0000000003934620>, 'hello_world': <function hello_world at 0x0000000003B1EA60>, 'login': <function login at 0x0000000003B1EAE8>, 'student_list': <function student_list at 0x0000000003B1EBF8>}
    Map([<Rule '/login' (POST, OPTIONS, GET, HEAD) -> login>,
    <Rule '/list' (POST, OPTIONS, GET, HEAD) -> student_list>,
    <Rule '/add' (POST, OPTIONS, GET, HEAD) -> add.add>,
    <Rule '/reg' (POST, OPTIONS, GET, HEAD) -> reg.reg>,
    <Rule '/' (OPTIONS, GET, HEAD) -> hello_world>,
    <Rule '/update/<sid>' (POST, OPTIONS, GET, HEAD) -> update.update>,
    <Rule '/delete/<sid>' (POST, OPTIONS, GET, HEAD) -> delete.delete>,
    <Rule '/static/<filename>' (OPTIONS, GET, HEAD) -> static>])

2.Flask中的路由配置

  @app.route("/<int:age>",methods=("get",),endpoint='xxx')
  动态路由参数<age>

3.Flask的配置

  1) Flask的实例配置
    app.config.from_object(obj)
    class Obj:

      DEBUG=True,。。。、、

  2) Flask初始化配置
    app=Flask(__name__,template_folder.....)
    template_folder = "模板存放路径"  # 蓝图应用时在蓝图py文件在同一文件夹下
      static_folder = "静态文件存放路径"
    static_url_path = "/默认值是等于static_folder的名字" # 蓝图应用时path不能重复
    static_host .....

4.蓝图(Blueprint)
  

  bp = Blueprint("bulename",__name__)   # 与Flask实例一样传参  

  @bp.route("/") 为蓝图添加路由 方式与Flask实例路由一毛一样

  注册蓝图
  app.register_blueprint(bule.bp)

插拔机制

5.装饰器before_request、aftert_request、errorhandler(404)
  

@app.before_request 请求进入视图函数之前作出处理
@app.after_request 请求结束视图函数之后,返回客户端之前,作出处理
def after(response)
return response

be1-be2-af2-af1
be1-af2-af1

errorhandler(404) #定义错误请求的响应
def err(code_or_exp)
  

@app.errorhandler(404)
def errors(code_or_exception):
# print(dir(arg),arg.name,arg.get_description())
return redirect("/login") # app.add_url_rule("/bo/<age>", methods=("GET", "POST"),endpoint="bofunc")

errorhandler

6.skip闪现(flash)

@app.route("/index")
def index():
res = get_flashed_messages()
if not res:
res = [""]
flash("你刚才访问了index")
return render_template("index.html",msg=res[0]) @app.route("/home")
def index1():
res = get_flashed_messages()
if not res:
res = [""]
flash("你刚才访问了home")
return render_template("index.html",msg=res[0]) if __name__ == '__main__':
app.run()

flash

7.sendfile jsonify
  

1.form flask import send_file
flask send_file 打开文件并返回
send_file(文件路径)

2.from flask import jsonify
return jsonify({a:1})
打包一个 content-Type:application/json 返回给客户端
jsonify的配置在app["JSONIFY_MIMETYPE"] = ""

python全栈开发day111-flask路由及其参数,Flask配置,蓝图,几个装饰器、闪现、send_file、jsonify的更多相关文章

  1. python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)

    昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...

  2. python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)

    一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...

  3. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  4. python全栈开发目录

    python全栈开发目录 Linux系列 python基础 前端~HTML~CSS~JavaScript~JQuery~Vue web框架们~Django~Flask~Tornado 数据库们~MyS ...

  5. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  6. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  7. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  8. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  9. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  10. Python全栈开发【基础三】

    Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...

随机推荐

  1. linux中去掉^M的方法

    转:https://blog.csdn.net/sty945/article/details/80347901 (1)是用VI的命令: 在命令模式下运行命令 :%s/^M//g 回车 注意:手动输入该 ...

  2. [M$]重装或更换主板后提示“由于指定产品密钥激活次数“ office 2016

    https://answers.microsoft.com/zh-hans/msoffice/forum/all/%E6%8C%87%E5%AE%9A%E4%BA%A7%E5%93%81%E5%AF% ...

  3. [Coci2015]Divljak

    题目描述  Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P. ...

  4. redis源码解析(1):redisObject对象说明

    Redis在实现键值对数据库时,并没有直接使用数据结构,而是基于已有的数据结构创建了一个对象系统,每种对象至少包含一种数据结构. redis3.0 中对象结构: typedef struct redi ...

  5. SQL随记(三)

    1.关于package: 包的作用:可以将任何出现在块声明的语句(过程,函数,游标,游标,类型,变量)放入包中,相当于一个容器. 包的好处:在包中的(过程,函数,游标,游标,类型,变量)相当于sql/ ...

  6. Token防止表单重复提交和CSRF攻击

    Token,可以翻译成标记!最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来. Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site re ...

  7. Pandas系列(三)-缺失值处理

    内容目录 1. 什么是缺失值 2. 丢弃缺失值 3. 填充缺失值 4. 替换缺失值 5. 使用其他对象填充 数据准备 import pandas as pd import numpy as np in ...

  8. 使用ZooKeeper协调多台Web Server的定时任务处理(方案1)

    背景说明: 有一套Web服务程序, 为了保证HA, 需要在多台服务器上部署, 该服务程序有一些定时任务要执行, 现在要保证的是, 同一定时任务不会在多台机器上被同时执行. 方案1 --- 任务级的主备 ...

  9. java(9)类和对象

    一.理解什么是类和对象 万事万物皆对象 1.1.属性——对象具有的特征(特点) 1.2.方法——对象可执行的操作(能干什么事) 1.3.对象的定义: 是一个客观存在的,看的见或摸得着的实体,由属性和方 ...

  10. java(7)数组

    一.什么是数组及其作用? 定义:具有相同数据类型的一个集合 作用:存储连续的具有相同类型的数据 二.java中如何声明和定义数组 2.1 声明和定义的语法: 数据类型[ ] 数组名:( int[ ] ...