Flask 基础知识总结

本文总结了Flask的基础知识,包括装饰器、安装验证、路由、HTTP方法、静态和模板、请求响应、错误处理、Flash消息和日志处理。通过示例介绍了如何使用Flask创建Web应用,以及如何处理不同HTTP请求、错误和日志记录。
摘要由CSDN通过智能技术生成
  • 装饰器
  • Flask安装
  • Routing
  • HTTP Method
  • 静态和模板
  • Request/Response
  • Error/重定向
  • Flash Message
  • Logger
  • Flask-Script

装饰器

def log(level, *arg, **kvargs):
    def inner(func):
        """
        * 无名参数,用来传递任意个无名参数,这些参数会以一个Tuple的形式访问
        ** 有名参数 用来处理传递任意个有名字的参数,这些参数用dict来访问
        """
        def wrapper(*args, **kvargs):
            print(level, 'before calling ', func.__name__)
            print(level, 'args',args,'kvargs', kvargs)
            func(*args, **kvargs)
            print(level, 'end calling ', func.__name__)
            
        return wrapper
    return inner

@log(level = 'INFO') # 直接去调用log装饰函数
def hello(name, age):
    print('hello',name,age)
    
if __name__ == '__main__':
    hello(name='toohoo',age=2) #= log(hello(name='toohoo',age=2))
    print("---------------------------")
    log(hello(name='toohoo',age=2))

测试结果

INFO before calling  hello
INFO args () kvargs {'name': 'toohoo', 'age': 2}
hello toohoo 2
INFO end calling  hello
---------------------------
INFO before calling  hello
INFO args () kvargs {'name': 'toohoo', 'age': 2}
hello toohoo 2
INFO end calling  hello

从上面的结果可以看出执行的顺序是从__main__开始调用Hello==>log装饰器==>inner函数==>wrapper函数==>func(就是hello函数)==>最后输出end…

因此可以知道,使用装饰器可以简化操作

安装与验证

使用命令import flask验证是否安装了flask,没有安装时候可以使用命令安装
sudo pip3 install flask

参考文档:

  • 中文文档:http://dormousehole.readthedocs.io/en/latest/
  • github开源地址:https://github.com/pallets/flask
  • 最新版本官网:https://palletsprojects.com/p/flask/

验证简单app

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return 'hello'

if __name__ == '__main__':
    app.run(debug=True)  # 开发的时候打开debug模式

路由 Routing

  • 1、/结尾自动补齐:@app.route('/')
  • 2、多映射:@app.route('/index/')
  • 3、参数变量:@app.route('/profile/<uid>/')
  • 4、变量类型:@app.route('/profile/<int:uid>/')

1、/结尾自动补齐和多映射:当使用浏览器访问的时候
使用127.0.0.1:5000和127.0.0.1:5000/都是一样的,/会自动补齐。

多映射就是可以设置多个映射路由,如下面的代码:

from flask import Flask

app = Flask(__name__)


@app.route('/index/')
@app.route('/')
def index():
    return 'hello'


if __name__ == '__main__':
    app.run(debug=True)

使用127.0.0.1:5000和127.0.0.1:5000/和127.0.0.1:5000/index都是可以访问的。

2、参数变量:@app.route('/profile/<uid>/')

@app.route('/profile/<uid>')
def profile(uid):
    return 'haha' + uid

浏览器中请求的url之后加上一个uid,页面会返回一个对应的uid,不限类型。
3、变量类型:@app.route('/profile/<int:uid>/')

@app.route('/profile/<int:uid>')
def profile(uid):
    return 'haha' + str(uid)

这个就必须是int类型,否则浏览器会显示Not Found

HTTP Method

  • GET:获取接口信息
  • HEAD:紧急查看HTTP的头
  • POST:提交数据到服务器
  • PUT:支持幂等性的POST(函数重发还是那一次,不改变)
  • DELETE:删除服务器上的资源
  • OPITIONS:查看支持的方法
    注意:一般的网站只用GET和POST,代表获取和更新,html的form仅仅支持GET和POST
@app.route('/profile/<int:uid>',methods=['GET', 'post'])
def profile(uid)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值