1_初识Flask

准备工作

1.安装pip和pipenv

pip --version (查看pip版本,一般安装python自带)
pip install <某个包的名称>
​
pip install pipenv

2.创建虚拟环境

pipenv install (创建虚拟环境)
pipenv shell   (显式激活虚拟环境)
​
pipenv run python hello.py (不显式执行命令)

3.管理依赖

在创建虚拟环境时,如果项目根目录下没有Pipfile文件,pipenv install命令会在项目文件夹下创建Pipfile(记录项目依赖包列表)和Pipfile.lock(固定版本的详细依赖包列表)文件

当需要在一个新的环境运行程序时,只需要执行pipenv install命令。Pipenv就会创建一个新的虚拟环境,然后自动从Pipfile中读取依赖并安装到新创建的虚拟环境中。

4.安装flask

pipenv install flask (下载)
pipenv update flask  (更新)

同时被安装的还有五个依赖包:

1_初识Flask_第1张图片

Hello, Flask

1.最小的flask程序

app.py:

from flask import Flask
app = Flask(__name__)    # 创建程序实例,实例化Flask类,__name__对于app.py来说值为app
​
@app.route('/') # 装饰器,注册路由,绑定根地址/和index()函数
def index():    # 视图函数
    return '

Hello Flask!

'

对于简单的程序来说,程序的主模块一般命名为app.py。你也可以使用其他名称,比如hello.py,但是要避免使用flask.py,因为这和Flask本身冲突。

1.一个视图函数可以绑定多个URL

@app.route('/hi')
@app.route('/hello')
def say_hello():
    return '

Hello, Flask!

'

2.动态URL

@app.route('/greet/')
def greet(name):
    return '

Hello, %s!

' % name @app.route('/greet') @app.route('/greet/') def greet(name='Programmer'): # 默认 return '

Hello, %s!

' % name

2.启动开发服务器

Flask内置简单开发服务器(由依赖包Werkzeug提供)

通过依赖包Click,当安装Flask后自动添加一个flask命令脚本

其中,flask run 命令用来启动内置的开发服务器,可以执行 flask --help 查看所有可用的命令

http://127.0.0.1即localhost,是指向本地机的IP地址,一般用来测试。Flask默认使用5000端口,对于上面的地址,你也可以使用http://localhost:5000/。

flask run 是如何找到程序实例的?

自动探测存在下面规则:

1.从当前目录寻找app.py和wsgi.py模块,并从中寻找名为app或application的程序实例

2.从环境变量FLASK_APP对应的模块名/导入路径寻找名为app或application的程序实例

$ export FLASK_APP = hello  # Linux macOS
​
> set FLASK_APP = hello     # windows

3.如果安装了 python-dotenv 自动从 .flaskenv 文件和 .env 文件中加载环境变量,优先级:手动设置的环境变量 > .env中设置的环境变量 > .flaskenv设置的环境变量

pipenv install python-dotenv
​
SOME_VAR=1
FOO="BAR"
# .flaskenv和.env文件中环境变量用键值对形式定义,每行一个,#开头的是注释

.flaskenv 用来存储和Flask相关的公开环境变量,比如FLASK_APP
.env 用来存储包含敏感信息的环境变量(服务器账户名密码),绝不能提交到git仓库中,.gitignore

3.更多的启动选项

flask run --host=0.0.0.0 # 使服务器外部可见
flask run --port=8000    # 改变默认端口5000

可以通过环境变量设置:

FLASK_RUN_HOST = 0.0.0.0
FLASK_RUN_PORT = 8000

4.设置运行环境

开发环境是指我们在本地编写和测试程序时的计算机环境,而生产环境与开发环境相对,它指的是网站部署上线供用户访问时的服务器环境。默认为production(生产)。

开发环境(development environment)和生产环境(production environment)
​
FLASK_ENV = development # 改变环境变量,将运行环境设置为开发环境

开发环境下会激活Werkzeug内置的调试器(debugger)和重载器(reloader):

  1. 调试器

    当程序出错时,我们可以在网页上看到详细的错误追踪信息

  2. 重载器

    监测文件变动,然后重新启动开发服务器

5.flask shell

使用flask shell命令打开的Python Shell自动包含程序上下文,并且已经导入了app实例:

>>> app

>>> app.name
 'app'

6.Flask扩展

扩展(extension)即使用Flask提供的API接口编写的Python库,可以为Flask程序添加各种各样的功能。在编写程序时,应该尽量从实际需求出发,只在需要的时候使用扩展,并把扩展的质量和兼容性作为考虑因素,尽量在效率和灵活性之间达到平衡。

from flask import Flask
from flask_foo import Foo
​
app = Flask(__name__)
foo = Foo(app) 

7.项目配置

在Flask中,配置变量就是一些大写形式的Python变量,你也可以称之为配置参数或配置键。和平时使用变量不同,这些配置变量都通过Flask对象的app.config属性作为统一的接口来设置和获取,它指向的Config类实际上是字典的子类,所以你可以像操作其他字典一样操作它

app.config['ADMIN_NAME'] = 'Peter'
​
app.config.update(
    TESTING = True,
    SECRET_KEY = '_5#yF4Q8z\n\xec]/'
)
​
value = app.config['ADMIN_NAME']

某些扩展需要读取配置值来完成初始化操作,因此我们应该尽量将加载配置的操作提前,最好在程序实例app创建后就加载配置。

8.URL与断点

@app.route('/')
def index():
    return 'Hello Flask!'     # 这个路由的端点即视图函数的名称index
                              # 调用url_for('index')可以获取到对应的URL,'/'

@app.route('/hello/')
def greet(name):
    return 'Hello %s!' % name # url_for('greet',name='cad'),得到'/hello/cad'

9.Flask命令

flask run

flask <命令名>

@app.cli.command()             # 装饰器,自定义命令,传入参数('say-hello')修改命令名
def hello():                   # 函数的名称即命令名称,用flask hello命令来触发函数
    """Just say hello."""      # 帮助信息显示 flask hello --help
    click.echo('Hello, Human!')# echo()函数,在命令行界面输出字符

10.模板与静态文件

模板(template)即包含程序页面的HTML文件,静态文件(static file)则是需要在HTML文件中加载的CSS和JavaScript文件,以及图片、字体文件等资源文件。

hello/
   - templates/
   - static/
   - app.py

11.Flask与MVC架构

MVC Flask
数据处理(Model) SQLAlchemy创建数据库模型
用户界面(View) Jinja2渲染的HTML模板
交互逻辑(Controller) 视图函数

你可能感兴趣的:(1_初识Flask)