Flask起步

Flask

- 所有的Flask程序都必须创建一个程序实例

- Flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字

- Flask 用这个参数决定程序的根目录,以便稍后能够找到相对于程序根目录的资源文件位置。


编写一个hello world

  • 首先需要导入Flask类,并创建类的对象
from flask import Flask
app = Flask(__name__)
  • 装饰器的作用是将路由映射到视图函数
  • 程序实例需要知道对每个URL请求运行哪些代码,所以要保存一个URL到Python函数的映射关系。
  • 在Flask程序中定义路由可以使用实例对象提供的app.route装饰器,把装饰器的函数注册为路由
@app.route('/')
def home():
    return 'Hello World'
  • 执行Flask实例对象的run方法,启动web服务器
  • name== 'main’在这里确保了直接执行这个脚本时才启动开发web服务器,如果这个脚本由其他脚本引入,程序嘉定父级脚本会启动不同的服务器,因此就不会执行app.run()
if __name__== '__main__':
    app.run()

Flask程序实例在创建的时候,需要默认传入当前Flask程序所指定的包(模块)

import_name
  • Flask程序所在的包或模块,传__name__就可以
  • 它可以决定Flask在访问静态文件时查找的路径
static_url_path
  • 静态文件访问路径,可以不传,默认为/ + static_folder
static——folder
  • 静态文件存储的文件夹,可以不传,默认为static
template_folder
  • 模板文件存储的文件夹,可以不传,默认为templates

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

主要的使用有三种方式:

  • 从配置对象中加载(可以继承)
app.config.from_object(你定义的配置对象)
from flask import Flask


class Default(object):
    MY_SQL = 'mysql address '


class DeafultConfig(Default):
    REDIS = 'redis address'

app = Flask(__name__)

# 从配置对象中加载
app.config.from_object(DeafultConfig)


@app.route('/')
def index():
    print(app.config['MY_SQL'])
    print(app.config['REDIS'])
    return '<h1>Hello World!</h1>'


if __name__ == '__main__':
    app.run()
  • 从配置文件中加载
app.config.from_pyfile(配置文件的名字加后缀,不需要导包)
from flask import Flask

app = Flask(__name__)
# 导入配置文件
app.config.from_pyfile('settings.py')


@app.route('/')
def index():
    print(app.config.get('SECRET_KEY'))
    return '<h1>Hello World!</h1>'


if __name__ == '__main__':
    app.run()

  • 从环境变量中加载
  • Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息,其使用方式为
app.config.from_envvar('环境变量名')

关于silent的说明:

  • 表示系统环境变量中没有设置相应值时是否抛出异常

  • False 表示不安静的处理,没有值时报错通知,默认为False

  • True 表示安静的处理,即时没有值也让Flask正常的运行下去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章