Flask入门(一)

本文是Flask入门系列的第一部分,介绍了web框架的基本概念,详细讲解了Flask框架的安装和基本使用,包括URL捕获参数、Flask-Script插件的安装与使用,以及响应对象、重定向和反向解析的概念。适合初学者了解和学习Flask框架。

web框架介绍

  • web框架:是一种开发框架,用来支持动态网站、网络应用程序及网络服务开发。web框架的本质就是一个socket服务端。
  • socket服务端:Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API)。

Flask框架

Flask框架是一个用Python编写的轻量级的Web应用框架。

  • 安装:pip install Flask

  • 在pycharm中创建Flask项目
    在这里插入图片描述

  • 最简单的完整程序

    # 第一个完整程序 hello Flask
    from flask import Flask
    app = Flask(__name__)  # 创建实例化程序
    
    @app.route("/index/")  # 路由装饰器
    def index_view():	   # 视图函数
    	return "Hello Flask!"
    
    if __name__ == "__main__":
    	# host:IP  port:端口  debug:调试模式,True打开
    	app.run(host="localhost",port=8888,debug=True)
    

    命令行运行:python app.py
    在这里插入图片描述

  • url捕获参数
    通过尖括号"<>"捕获URL中的参数,并可以在捕获后转换参数的数据类型,最后传递到修饰的视图函数(请求处理函数)中
    Flask 中所支持的类型转换器:
    类型转换器 作用
    缺省string 字符串,不包含杠(‘/’)
    int: 整型
    float: 浮点型
    path: 字符串,包含斜杠(‘/’)

    from flask import Flask
    app = Flask(__name__)
    
    # 参数捕获
    @app.route("/hello/<name>/")  # /hello/<string:name>/  string可省略
    def param_str_view(name):
    	return "<h3 style='color:blue'>姓名:"+ name +"</h3>"
    	
    @app.route("/hello/ages/<int:age>/")  # 通过int 控制参数的格式,float同理,系统匹配以“/” 结束
    def param_int_view(age):
    	return "<h3 style='color:blue'>年龄:"+ str(age) +"</h3>"
    
    @app.route("/files/<path>/")  # 路径path,会连同"/"匹配
    def param_path_view(path):
    	return "<h3 style='color:blue'>路径是:"+ str(path) +"</h3>"
    
    if __name__ == "__main__":
    	app.run()
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • Flask-Script 插件
    将程序实例对象传入Manager中的构造方法中,使用manager管理对象来启动应用,启动服务时,支持命令行选项
    安装:pip install flask-script

    from flask import Flask
    from flask_script import Manager
    
    app = Flask(__name__)  # 创建实例化程序
    manager = Manager(app) # 创建manager管理对象,将程序实例对象传入Manager中的构造方法中
    
    @app.route("/index/")  # 路由装饰器
    def index_view():	   # 视图函数
    	return "Hello Flask!"
    
    if __name__ == "__main__":
    	manager.run()  # 通过manager对象来启动应用
    

    命令行启动服务命令:python 启动脚本名称 runserver 选项参数
    常用的启动参数:
    -h 允许访问的主机
    -p 开放的端口号
    -d 开启调试
    -r 自动监测程序改动,自动重启服务器
    -R 不监测程序改动

    python app.py runserver -h 0.0.0.0 -p 8000 -d 在这里插入图片描述

  • response响应对象
    通过make_response()函数创建响应对象,cookie正是通过该对象创建的

    from flask import Flask,make_reaponse
    from flask_script import Manager
    
    app = Flask(__name__)
    manager = Manager(app)
    
    @app.route("/cookie/")
    def add_cookie_view():
    	response = make_response("Cookie添加成功!")
    	response.set_cookie("name","Jack",max_age=30)  # max_age 过期时间
    	response.set_cookie("user","admin")
    	return response
    
    @app.route("/cookies/")
    def cookies_view():
        cookies = request.cookies
        html = ""
        for k, v in cookies.items():  # 遍历所有Cookie
            html += k
            html += "========>"
            html += v
            html += "<br/>"
        return html
    

    在这里插入图片描述
    在这里插入图片描述

  • 重定向:redirect
    使用redirect(“重定向的路径”)函数实现重定向,可以重定向到外网,eg:https://www.baidu.com/,也可以重定向到本项目中的路由地址

    import time
    from flask import Flask,make_reaponse,redirect
    from flask_script import Manager
    
    app = Flask(__name__)
    manager = Manager(app)
    
    @app.route("/redirect/")
    def redirect_view():
    i = 5
    while i > 0:
        time.sleep(1)
        print("还剩%s秒跳转到百度"%i)
    return redirect("https://www.baidu.com/")
    

    在这里插入图片描述
    在这里插入图片描述

  • 反向解析:动态获取url,处理硬编码。url_fro(endpoint,**kwargs)
    endpoint:视图函数,通过此视图函数名获取对应的路由
    **kwargs:如果对应的路由需要传递参数,则通过关键字实参传递

    from flask import Flask,url_for,redirect
    from flask_script import Manager
    
    app = Flask(__name__)
    
    @app.route("/ageview/<int:age>/",)
    def age_view(age):
    	return "年龄是:" + str(age)
    
    @app.route("/index/age/")
    def index_view():
    	# 重定向+ 反向解析
    	age = 20
    	# 反向解析的视图函数需要传递参数,则使用关键字传参
    	return redirect(url_for("age_view",age=age))
    
    

    在这里插入图片描述
    待更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Calm_1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值