首页 > 其他 > 详细

flask 基础

时间:2019-11-09 21:00:24      阅读:69      评论:0      收藏:0      [点我收藏+]

1,环境安装

  1, mkvirtualenv name -p python3
  2, pip install flask==1.0.3

2,路由定义 

1,路由一定要以‘/’开头
2,可以通过app.url_map属性来获取所有路由(url资源段)
3,可以通过method 方法指定参数来设置路由的请求方式

自定义路由转换器
1,自定义路由转换器类,继承BaseConverter
2,定义属性regex,设置匹配规则
3,添加自定义转换器

示例代码:

from flask import Flask

app = Flask(__name__)

# 1. URL必须以/开头
# 3. 可以通过methods参数来设置路由支持的请求方式
@app.route(/index, methods=[POST, GET])
def index():

    return "index"


if __name__ == __main__:
    # 2.可以通过app.url_map属性来获取所有的路由规则 (URL资源段 支持的请求方式 视图函数的标记)
    print(app.url_map)
    # for rule in app.url_map.iter_rules():
    #     print(rule.rule, rule.methods, rule.endpoint)
    app.run(debug=True)

3,路由变量

  正则对路由变量进行格式过滤,失败会返回404,

# 路由变量: 实现动态URL  让一个视图函数可以绑定"一类URL"
# 获取某本书   GET  /books/(?P<pk>\d+)

# 路由变量格式:  /user/<路由变量的名称>


from flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(__name__)


# @app.route(‘/user/<userid>‘)
# def index(userid):  # 一旦定义了路由变量, 必须定义同名形参来接收路由变量的值
#     print(userid)
#     return "index"


# 正则转换器: 对路由变量进行格式过滤  过滤失败会返回404
# 格式: /user/<转换器名:路由变量>
@app.route(/user/<int:userid>)  # int转换器: 要求路由变量必须能够转为int
def user(userid):

    print(type(userid))
    return user

自定义转换器的使用: 

  1. 自定义转换器类 继承BaseConverter
  2. 定义属性regex, 设置匹配规则
  3. 添加自定义转换器
# 所有的内置转换器都继承BaseConverter

"""自定义转换器
1. 自定义转换器类 继承BaseConverter
2. 定义属性regex, 设置匹配规则
3. 添加自定义转换器
"""
class MobileConverter(BaseConverter): # 自定义转换器类
    # 定义属性regex, 设置匹配规则
    regex = r1[3-9]\d{9}$  # 规则不要添加开头的^

# 添加自定义转换器  {转换器名: 转换器类}
app.url_map.converters[mob] = MobileConverter


@app.route(/home/<mob:mobile>)  # 使用自定义的转换器
def home(mobile):
    return home


if __name__ == __main__:
    # 获取所有的转换器 {转换器名: 转换器类}
    # print(app.url_map.converters)
    app.run(debug=True)

 

4,flask接收前端的4中方式

  1,查询字符串方式  request.args

 # 获取查询字符串 -> request.args 类字典对象
    # print(request.args.get(‘name‘))

  2,获取form_data表单传参   request.form

# 获取请求体-键值对(表单) -> request.form    类字典对象
    # print(request.form.get(‘username‘))

  3,获取请求体传参  文本   request.data  |  request.json

 # 获取请求体-文本(json) -> request.data/request.json
    # print(request.data)  # bytes类型
    # print(request.json.get(‘name‘))  # 会将json字符串自动转为字典

  4,获取请求体传参   文件  request.files

# 获取请求体-文件(图片) -> request.files 类字典对象
    file = request.files.get(avatar)  # type: FileStorage
    # 将文件保存到本地
    # file.save(‘123.png‘)
    # 获取文件的二进制数据
    file_bytes = file.read()

完整代码:

技术分享图片
from flask import Flask, request
from werkzeug.datastructures import FileStorage

app = Flask(__name__)


@app.route(/, methods=[POST, GET])
def index():
    # 获取请求的URL
    # print(request.url)
    # 获取本次请求的请求方式
    # print(request.method)
    # 获取本次请求的请求头
    # print(request.headers)  # 类字典对象 可以像字典一样赋值和取值
    # print(request.headers.get(‘Host‘))  # 建议使用get方法, 不存在会返回None, 不报错

    # 请求传递数据的方式 1> URL路径参数-> 路由变量 2> GET 查询字符串 xx?name=xx&age=20  3> POST 请求体 键值对(表单)/文本(json)/文件(图片) 4> 请求头 -> request.headers

    # 获取查询字符串 -> request.args 类字典对象
    # print(request.args.get(‘name‘))

    # 获取请求体-键值对(表单) -> request.form    类字典对象
    # print(request.form.get(‘username‘))

    # 获取请求体-文本(json) -> request.data/request.json
    # print(request.data)  # bytes类型
    # print(request.json.get(‘name‘))  # 会将json字符串自动转为字典

    # 获取请求体-文件(图片) -> request.files 类字典对象
    file = request.files.get(avatar)  # type: FileStorage
    # 将文件保存到本地
    # file.save(‘123.png‘)
    # 获取文件的二进制数据
    file_bytes = file.read()
    print(file_bytes)
    return "index"


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

 

响应:

1,访问静态文件步骤:

  1,将静态文件放入static文件夹中

  2,使用flask内置的静态文件路由进行访问

 

 

 

 

 

 

 

 

flask 基础

原文:https://www.cnblogs.com/wjun0/p/11827470.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!