Flask框架学习 Day1

以下学习资料均来自B站:《【2021全新合集】5天速成Flask Web框架开发项目实战(无偿分享完整版)----人工智能基础!》

Flask做什么的?

Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask使用BSD授权。 Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。

Flask有两个主要的依赖:路由,调试和web服务器网关接口子系统有werkzeug提供;模版系统由jinja2提供,werzeug和jinja2都是由Flask的核心开发者开发而成。

flask 框架 核心 Werkzerug+jinja2 轻量化 只提供核心

框架轻重:

重量级的框架:为方便业务程序开发,提供丰富的工具,组件。如Django。

轻量级的框架:只提供web框架的核心功能,自由,灵活,高度定制,如Flask,Tornado。

常用扩展包

扩展列表:http://falsk.pocoo.org/extensions/

  • Flask-SQL alchemy: 操作数据库
  • Flask-RESTful:认证REST API的工具

​ 还有很多

帮助文件

欢迎使用 Flask — Flask 0.10.1 文档 (jinkan.org)

环境搭建:
  1. 虚拟环境和pip的命令

    #虚拟环境
    mkvirtualenv # 创建虚拟环境
    rmvirtualenv # 删除虚拟环境
    workon 		 # 进入虚拟环境,查看所有的虚拟环境
    deactivate	 # 退出虚拟环境
    
    #pip
    pip install #安装依赖包
    pip uninstall #删除依赖包
    pip list #查看已安装的依赖包
    pip freeze #冻结当前环境的依赖包
    
  2. 创建虚拟环境

    mkvirtualen flask -p python3 
    
  3. 安装Djiango
    使用flask1.0.2版本,注意需要联网

    pip install flask
    

工程搭建

Flask程序编写

创建helloworld.py文件

#导入Flask类
from flask import Flask
#Flask;类接收一个参数-name-
app = Flask(__name__)
#装饰器的作用是将路由映射道视图函数index
@app.route('/')
def index():
	return 'hello world'
#Flask应用程序实例的run方法启动web服务器
if __name__ == '__main__':
	app.run()

​ 所有的Flask程序都必须创建一个程序实例。web服务器使用一个名为web服务器网关接口(Web Server Gateway Interface,WSGI)的协议,把接收自客户端的所有请求都转交给这个对象。程序实例是Flask类的对象。Flask类的构造函数只有一个必须指定的参数,既程序主模块或包的名字。在大多数程序中,python的__name__变量就是所需的值。

​ 客户端(例如web浏览器)把请求发给web服务器,web服务器再把请求发送给Flask程序实例,程序实例需要知道对每个url请求运行哪些代码,所有保持了一个url到python函数的映射关系。处理url和函数之间的关系的程序称为路由。

​ 使用程序实例提供的app.route修饰器,吧修饰的函数注册为路由。

​ 把index()函数注册为程序跟地址的处理程序。如果部署程序的服务器域名为www.example.com,在浏览器中访问http://www.example.com后,会触发服务器执行index()函数。这个函数的返回值成为响应,是客户端接收到的内容,如果客户端是web浏览器,响应就是显示给用户查看的文档。

​ 像index()这样的函数称为视图函数(view functhon)。视图函数返回的响应可以是包含html的简单字符串,也可以是复杂的表单。

​ 程序实例用run方法启动flask集成的开发web服务器:

​ if _ name _ == '_ main _'是python,这里确保直接执行这个脚本时才启动开发web夫妻。如果这个脚本由其他脚本引入,程序假定父级脚本会启动不同的服务器,因此不会执行app.run()。

​ 服务器启动后,会进入轮询,等待并处理请求。轮询会一直运行,知道程序停止,比如按ctrl-c键。

启动运行

  • 手动启动
python helloworld.py
  • pycharm中运行

要想运行这个程序,请确保激活你之前创建的虚拟环境,并安装了Flask。现在打开web浏览器,在地址栏中输入http://127.0.0.1:5000/。

参数说明

  • Flask对象的初始化参数

    1. improt_name

      • Flask 程序所在的包(模块),传_ name _就可以 查找工程文件目录,例如:static、template
      • 其可以决定Flask在访问静态文件时查找的路径
    2. static_url_path

      • 静态文件访问路径,可以不传,默认为:/+static_folder

      app.Flask(_name _,static_url_path=‘/s’) 将static的文件夹改为在输入s的情况下,也能找到对于的文件。

      例如:将一张图片存入到static/1.png 原来的访问地址http://127.0.0.1:5000/static/1.png

      更改后:访问地址为http://127.0.0.1:5000/s/1.png/

    3. static_folder

      • 静态文件存储的文件夹,可以不传,默认为static

        app.Flask(_name _,static_url_path=‘/s’,static_folder=‘static_folder’)在目录下指定一个静态文件目录,文件名称'static_folder'

    4. template_folder

      • 模版文件存储的文件夹,可以不传,默认为templates
  • 应用程序配置参数

  • app.run()运行参数

Flask将配置信息保存到了app.config属性中,该属性可以按照字典类型进行操作。

读取

  • app.config.get(name)
  • app.config[name]

设置

主要有三种方法:

  • 从配置对象中加载

    app.config.from_object(配置对象)

    class DefaultConfig(object):
        """默认配置"""
        SECRET_KEY = 'Tppphhh'
        
    	app = Flask(_name_)
        app.config.from_object(DefaultConfig)
        
        @app.route('/')
    	def index():
            print(app.config['SECRET_KEY'])
            return "hello world"
    

    应用场景:

    作为默认配置写在程序代码中

    可以继承

    class DevelopmentConfig(DefaultConfig):
     	Debug=True
    

    实例:

    from flask import Flask
    
    # 配置对象方式加载配置未见
    class DefaultConfig(object):
        """
        默认配置
        """
        SECRET_KEY = 'csddsdsd087898dd77d'
    
    app = Flask(__name__)
    # 设置
    app.config.from_object(DefaultConfig)
    
    # 定义视图
    @app.route("/")
    def index():
        # 读取配置信息
        print(app.config['SECRET_KEY'])
        return "hello world"
    
    
    if __name__ == '__main__':
        app.run()
    
  • 从配置文件中加载

    app.config.from_pyfile(配置文件)

    新建一个配置文件setting.py

    SECRET_KEY = 'TPHDDDDDD'
    

    在Flask程序文件中

    app = Flask(__name__)
    app.config.from_pyfile('setting.py')
    @app.route("/")
    def index():
            print(app.config['SECRET_KEY'])
            return "hello world"
    
    

    应用场景:

    在项目中使用固定的配置文件

    实例:

    setting.py 文件中

    SECRET_KEY = 'csddsdsd087898dd77d'
    

    在主程序中

    from flask import Flask
    
    app = Flask(__name__)
    # 设置
    app.config.from_pyfile('setting.py')
    
    # 定义视图
    @app.route("/")
    def index():
        # 读取配置信息
        print(app.config['SECRET_KEY'])
        return "hello world"
    
    
    if __name__ == '__main__':
        app.run()
    
  • 从环集变量中加载

    环境变量就是我们设置在操作系统中,由操作系统代为保存的变量值。

    Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息,其使用方式为

    app.config.from_envvar('环境变量名')

    环境变量的值为配置文件的绝对路径

    现在终端中执行如下命令

    export PROJECT_SETTING='~/setting.py'

    再运行如下代码

    app.Flask(_name_)
    app.config.from_envvar('PROJECT_SETTING',silent=True)
    @app.route("/")
    def index():
        print(app.config['SECRT_KEY'])
        return "hello world"
    

    Flask

    重定向

    from flask import abort,redirect
    @app.route('/')
    def index():
        return redirect("www.baidu.com")#直接跳转到百度
    
    
posted @ 2021-08-07 10:29  用智慧点亮前进的道路  阅读(71)  评论(0)    收藏  举报