Flask的完整运行

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/G_SANGSK/article/details/80754240

完整运行的flask

实例


from flask import Flask

app = Flask(__name__) #创建flask的实例


# @app.route('/') #路由  访问地址 127.0.0.1:5000 或  127.0.0.1:5000/
# @app.route('/index') #路由 访问地址 127.0.0.1:5000/index
@app.route('/index/') #路由 访问地址 127.0.0.1:5000/index 或 27.0.0.1:5000/index/
def index():
    return 'Hello Flask'

if __name__ == '__main__':
    app.run()#执行flask的运行

请求地址为 http://127.0.0.1:5000

路由地址传参问题

(1) 无参路由


@app.route('/') #路由  访问地址 127.0.0.1:5000 或  127.0.0.1:5000/
def index():
    return 'Hello Flask'

(2) 带一个参数的路由地址


#带一个参数的路由地址
@app.route('/arg/<age>/') #127.0.0.1:5000/arg/18
def arg(age):
    return '参数的值为{}'.format(age)

(3) 传递多个参数


#传递多个参数
#使用路由地址分隔符 进行分隔
@app.route('/args/<name>/<age>/') #http://127.0.0.1:5000/args/zhangsan/18/
#http://127.0.0.1:5000/args/zhangsan_18/
@app.route('/args/<name>_<age>/')
def args(name,age):
    return '我叫{} 我今年{}岁了'.format(name,age)

(4) 限制参数的类型 手动


from flask import abort
#传递参数限制值的类型  手动
#http://127.0.0.1:5000/args/zhangsan_18/
@app.route('/args/<name>_<age>/')
def args(name,age):
    try:
        age = int(age) #限制类型转换为整形
    except:
        # raise ValueError
        abort(404) #抛出404
    return '我叫{} 我今年{}岁了'.format(name,age)

(5) 限制参数的类型 自动


#传递参数 通过路由限制类型
@app.route('/args/<name>_<int:age>/') #限制参数类型为 int
@app.route('/args/<name>_<float:age>/') #限制参数类型为float
@app.route('/args/<name>_<age>/') #限制参数类型为float
@app.route('/args/<name>_<string:age>/') #限制参数类型为字符串 默认值就是
@app.route('/args/<name>_<path:age>/') #限制参数类型为float 将路由地址age后面的所有参数 都认为是当前age的参数值 /分隔符不再作为分隔符使用
def args(name,age):
    print(type(age))
    return '我叫{} 我今年{}岁了'.format(name,age)

response 响应

(1) 返回一个字符串进行响应 return


@app.route('/response/')
def res():
    return '我是响应'

(2) 响应内容和状态码


@app.route('/response/')
def res():
    return '我是响应',404#响应内容和状态码

(3) 使用系统的 make_response进行响应


@app.route('/response/')
def res():
    res = make_response('我是响应',404) #设置cookie的时候使用 当前的make_response  其它情况都是响应一个html页面
    return res

注意:

  1. 路由地址结尾/建议都加上 因为在访问有/作为结尾的地址的时候 浏览器会自动帮你添加

  2. 路由传参写在<参数名称> 参数的名称为 形参名

  3. 在flask中 路由地址可以相同 如果同为一个方法请求(如:GET) 则会按照顺序执行,执行在上方的视图函数

  4. 视图函数 不可以重名

flask启动的参数

app.run的参数

参数参数说明
debug开启调试模式 默认为False
host主机
port端口号
threaded多线程 默认flase

app.run(host='0.0.0.0',port=5001,threaded=True,debug=True)

请求对象

概念: request是根据每一个用户的请求 对应创建的request对象 是由flask创建 在使用的时候 只需要导入就可以

导入

from flask import request

127.0.0.1:5000/request/canshu/?name=zhangsan&age=lisi&age=wangwu

request属性

  1. url 请求的完整的url

  2. base_url 去掉get传参的url

  3. host_url 主机和端口号的url

  4. path 请求的路由地址

  5. method 请求的方式

  6. args 获取get传参

  7. args.getlist(key) 获取有相同key的get传参 getlist的参数为 多个值的key

  8. form 获取表单传递过来的数据

  9. files 获取文件上传的数据

  10. headers 获取请求头信息

  11. cookies 获取多个cookie

abort 终止

在代码运行的过程中 出现任何的异常 可以使用abort 抛出标准的http状态码 终止当前程序的执行 和raise类似 抛出问题的代码的上方都正常执行 下面不再执行

导入

from flask import abort


@app.route('/')
def idnex():
    abort(404)
    下面代码不再执行

错误的捕捉


#捕获http错误
@app.errorhandler(404)
def page_not_found(e):
    return '错误信息为{}'.format(e)

#捕获http错误
@app.errorhandler(500)
def page_not_found(e):
    return '错误信息为{}'.format(e)

展开阅读全文

没有更多推荐了,返回首页