实现Flask基本程序
Posted xiongsheng666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现Flask基本程序相关的知识,希望对你有一定的参考价值。
实现Flask基本程序
1、简单的7行代码实现一个web服务器
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return 'hello world'
if __name__ == '__main__':
app.run()
说明:这里的hello word和我们在python程序print打印的hello word完全不同,这是web服务器,前端访问请求响应的结果
2、实现Flask基本程序的要求
具体步骤:
1、导入Flask类
2、创建Flask类的实例对象
3、定义路由和视图函数
4、启动服务器
3、Flask实现web服务代码说明
1、导入Flask类
from flask import Flask
2、 创建Flask类的实例对象
app = Flask(__name__)
注意 这样对 Flask(name) 是有要求的
具体要求
参数:必须是字符串,__name__的作用确定程序启动文件所在的位置;
符串,__name__的作用确定程序启动文件所在的位置;
实例路径会影响静态文件的访问;
http://127.0.0.1:5000/static/hello.html
例如 “name” 行 abc不行、 ab行、 abcd行;
“name” 行
ab行
abc不行
结论:如果传入的参数为标准模块名,会影响静态文件的访问,不会影响视图函数的访问;
3、定义路由和视图函数
@app.route("/")
def hello():
return 'hello world'
4、程序入口
if __name__ == '__main__':
app.run()
main方法说明
if __name__ == '__main__':
当前文件独立运行时,该表达式成立
当前文件被导入到其它文件中调用,该表达式不成立,name == 文件名
4、 应用程序配置参数
对于Flask对象初始化参数仅仅设置的是Flask本身的属性,比如:
Flask从哪里读取静态文件
Flask从哪里读取模板文件
…
等等。
应用程序配置参数设置的是一个Web应用工程的相关信息,比如:
数据库的连接信息
日志的配置信息
自定义的配置信息
…
等等
作用
集中管理项目的所有配置信息
使用方式
Django将所有配置信息都放到了settings.py文件中,而Flask则不同。
Flask将配置信息保存到了app.config属性中,该属性可以按照字典类型进行操作。
读取
app.config.get(name)
app.config[name]
设置
主要使用以下三种方式:
1、从配置对象中加载
2、从配置文件中加载
3、从环境变量中加载
1、从配置对象中加载
from flask import Flask
# 配置文件加载:字典形式存储配置信息
# 1、从配置对象中加载
class DefaultConfig(object):
mysql_URL = 'mysql address 5555555555555'
app = Flask(__name__)
# 获取配置对象的配置信息
app.config.from_object(DefaultConfig)
@app.route('/')
def index():
# config是Flask中自带的配置对象,保存了程序的配置信息
print(app.config.get('MYSQL_URL'))
return 'hello world'
if __name__ == '__main__':
app.run()
from flask import Flask
from set import DefaultConfig, ProductionConfig
app = Flask(__name__)
app.config.from_object(DefaultConfig)
@app.route('/')
def index():
# 获取配置信息
print(app.config.get("MYSQL_URL"))
return 'hello world'
if __name__ == '__main__':
app.run()
2、从配置文件中加载
from flask import Flask
# 1、从配置文件中加载
app = Flask(__name__)
# 获取配置文件的配置信息, ini 初始化文件,里面保持的是配置信息
app.config.from_pyfile('settings.py')
@app.route('/')
def index():
# 获取配置信息
print(app.config.get('SECRET_KEY'))
return 'hello world'
if __name__ == '__main__':
app.run()
配置文件也可以不是.py形式 列如ini文件
from flask import Flask
# 1、从配置文件中加载
app = Flask(__name__)
# 获取配置文件的配置信息, ini 初始化文件,里面保持的是配置信息
app.config.from_pyfile('settings.py')
@app.route('/')
def index():
# 获取配置信息
print(app.config.get('SECRET_KEY'))
return 'hello world'
if __name__ == '__main__':
app.run()
3、从环境变量中加载
from flask import Flask
# 配置文件加载:字典形式存储配置信息
# 三种形式:
# 1、从配置对象中加载
# 2、从配置文件中加载
# 3、从环境变量中加载
# class DefaultConfig(object):
# MYSQL_URL = 'mysql address'
# REDIS_URL = 'redis address'
app = Flask(__name__)
# 获取配置对象的配置信息
from set import DefaultConfig, ProductionConfig
app.config.from_object(DefaultConfig)
# 获取配置文件的配置信息,可以加载不是py格式的文件;
# ini初始化文件,里面保存的是配置信息
# app.config.from_pyfile('settings.ini')
# 从环境变量中加载
# silent表示沉默,是否记载到环境变量的配置信息
# 如果True表示沉默,加载不到不报错
# 如果False表示不沉默,加载不到报错
app.config.from_envvar('SET', silent=True)
@app.route('/')
def index():
# config是Flask中自带的配置对象,保存了程序的配置信息
# print(app.config.get('MYSQL_URL'))
# 获取配置信息
# print(app.config.get('SECRET_KEY'))
# 从环境变量文件中获取配置信息
print(app.config.get("SECRET_KEY"))
return 'hello world'
if __name__ == '__main__':
app.run()
5、工厂函数
需求: 在项目中,配置信息的使用方式;
工厂模式:
1. 定义工厂函数,封装创建程序实例的代码
2. 定义函数的参数,可以根据参数的不同,生成不同的app
from flask import Flask
from set import DefaultConfig, ProductionConfig
# 需求: 在项目中,配置信息的使用方式;
# 工厂模式:
# 1. 定义工厂函数,封装创建程序实例的代码
# 2. 定义函数的参数,可以根据参数的不同,生成不同的app
def create_flask_app():
app02 = Flask(__name__)
app02.config.from_envvar('SET', silent=True)
return app02
def create_app(config_name):
app01 = Flask(__name__)
app01.config.from_object(config_name)
return app01
app = create_app(DefaultConfig)
@app.route("/")
def hello():
print(app.config.get("MYSQL_URL"))
print(app.config.get("REDIS_URL"))
return 'hello world'
if __name__ == '__main__':
app.run()
以上是关于实现Flask基本程序的主要内容,如果未能解决你的问题,请参考以下文章