flask框架整理01

flask框架 整理01

hello flask 程序

示例

# –*– coding: utf-8 –*–
# @Time      : 2019/7/6 09:47
# @Author    : Damon_duanlei
# @FileName  : hello_flask.py
# @BlogsAddr : https://blog.csdn.net/Damon_duanlei

from flask import Flask

# 创建flask的应用对象
# __name__ 当前模块名,传入模块名指明整个工程的总目录
# 默认此目录中的 static为静态目录, templates为静态目录
app = Flask(__name__)


# 装饰器的作用是将路由映射到视图函数 index
@app.route("/")
def index():
    """定义视图函数"""
    return "index page"


@app.route("/hello")
def hello_flask():
    return "

Hello Flask

"
if __name__ == '__main__': # 启动flask app.run()

相关配置参数

flask 初始化参数

app = Flask(__name__,
            static_url_path="/python",  # static_utl_path 访问静态资源的前缀 默认值static
            static_folder="/static",  # static_folder 静态文件目录, 默认值static
            template_folder="/template"  # template_folder 模板目录,默认template
            )

程序加载配置

在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:

from flask import current_app
# 程序加载配置方式
# 1.使用配置文件
app.config.from_pyfile("config.cfg")
# 2.从对象导入(常用)
class Config(object):
    DEBUG = True       
app.config.from_object(Config)
# 3.直接操作app.config 的字典对象
app.config["DEBUG"] = True

# 读取配置参数
# 直接操作config的字典对象
app.config.get()
# 通过 current_app获取参数
curren_app.config.get()

flask启动

可以指定运行的主机IP地址,端口,是否开启调试模式


app.run(host="127.0.0.1", port=5000, debug=True)

路由基本定义

查看所有的路由使用 **app.url_map


if __name__ == '__main__':
    print(app.url_map)
    # 启动flask
    app.run(debug=True)

运行结果:

Map([<Rule '/hello/flask' (HEAD, OPTIONS, GET) -> hello_flask>,
 <Rule '/hello' (HEAD, OPTIONS, GET) -> hello_flask>,
 <Rule '/' (HEAD, OPTIONS, GET) -> index>,
 <Rule '/static/' (HEAD, OPTIONS, GET) -> static>])

指定路由地址

# –*– coding: utf-8 –*–
# @Time      : 2019/7/7 10:50
# @Author    : Damon_duanlei
# @FileName  : url_demo.py
# @BlogsAddr : https://blog.csdn.net/Damon_duanlei

from flask import Flask, redirect, url_for

# 创建flask的应用对象
# __name__ 当前模块名,传入模块名指明整个工程的总目录
# 默认此目录中的 static为静态目录, templates为静态目录
app = Flask(__name__)


@app.route("/")
def index():
    """定义视图函数"""
    return "index page"

# 一个视图函数对应多个路由
@app.route("/hello/flask")
@app.route("/hello")
def hello_flask():
    return "

Hello Flask

"
# 通过methods指定访问的限定方式 @app.route("/postonly", methods=["POST"]) def post_only(): return "post only page" # 同一路由装饰多个视图函数 @app.route("/methods", methods=["POST"]) def post_method(): return "post method page" @app.route("/methods", methods=["GET"]) def get_method(): return "GET method page" # 使用url_for进行反解析 @app.route("/login") def login(): # 登录逻辑...... # 使用url_for 函数, 可以通过视图函数的名字找到视图函数对应的url路径 url = url_for("hello_flask") return redirect(url) if __name__ == '__main__': print(app.url_map) # 启动flask app.run()

给路由传参

有时需要将同一类 URL 映射到同一个视图函数处理, 比如, 使用同一个视图函数来显示不同用户的个人信息.

代码示例:

# –*– coding: utf-8 –*–
# @Time      : 2019/7/7 14:57
# @Author    : Damon_duanlei
# @FileName  : converter_demo.py
# @BlogsAddr : https://blog.csdn.net/Damon_duanlei

from flask import Flask, redirect, url_for

# 创建flask的应用对象
# __name__ 当前模块名,传入模块名指明整个工程的总目录
# 默认此目录中的 static为静态目录, templates为静态目录
app = Flask(__name__)


@app.route("/")
def index():
    """定义视图函数"""
    return "index page"


# 转换器
# 转换器有以下类型
# string   接受字符串 除"/"
# int      接受整数
# float    接受浮点数
# path     和默认转换器相似, 但是接受斜线
@app.route("/user/")
@app.route("/user/")  # 不指定转换器类型时 使用默认string类型
def user(user_id):
    return "user id is {}".format(user_id)


# 自定义转换器(提取手机号为例)
# 导入 BaseConverter
from werkzeug.routing import BaseConverter


# 1.定义自己的转换器
class MobileConverter(BaseConverter):
    def __init__(self, url_map):
        # 调用父类的初始化方法
        super().__init__(url_map)
        self.regex = "13[0-9]{9}"  # 以此为例

    #


# 2.将自定义的转换器添加到flask的app.url_map.converters
app.url_map.converters["mobile"] = MobileConverter


# 3.使用自定义的转换器
@app.route("/call/")
def call_phone(mobile_number):
    return "call phone number {}".format(mobile_number)


# 定义正则转换器
class RegexConverter(BaseConverter):
    def __init__(self, url_map, regex):
        super().__init__(url_map)
        self.regex = regex

    def to_python(self, value):
        # 转换器提取到参数后会将参数传到 to_python中进行用户自定义的逻辑处理
        # 将处理后的值返回给视图函数       
        pass
        return "处理后的参数"

    def to_url(self, value):
        # 当重定向使用 url_for 时,入重定向到的视图函数使用转换器获取参数
        # 如 url = url_for("call_phone",mobile_number="xxx")时
        # 传入的参数先进入 to_url 方法处理,将处理结果返回给 call_phone 视图函数
        pass
        return "处理后的参数"

app.url_map.converters["re"] = RegexConverter


# 将匹配的正则表达式以参数行驶传入
@app.route("/callnumber/")
def send_email(number):
    return "call number to {}".format(number)


if __name__ == '__main__':
    # 启动flask
    app.run(debug=True)


你可能感兴趣的:(自学总结,python,flask框架)