Flask web开发01:初识 Flask

本文介绍如何使用Pipenv搭建Python开发环境,通过示例详细讲解Flask Web框架的基础知识,包括环境搭建、基本应用、路由配置、视图函数、模板渲染及Flask扩展等内容。

一、 搭建开发环境

1. Pinenv相关命令

Pipenv 是基于 pip 的 Python 包管理工具,它是 pip、Pipfile 和 Virtualenv 的结合体,它让包安装、包依赖管理和虚拟环境管理更加方便,关于使用 Pipenv的一些命令:

  • pip install pipenv # 安装 Pipenv
  • pipenv install # 创建虚拟环境
  • pipenv shell # 显示激活虚拟环境
  • pipenv graph # 查看当前环境的依赖
  • pipenv install flask # 在虚拟环境中安装 Flask
  • pipenv update flask # 更新 Flask

2. Flask 的依赖包

名称说明
Jinja2模板渲染引擎
MarkupSafeHTML 字符转义工具
WerkzeugWSGI 工具集,处理请求与响应,内置WSGI开发服务器、调解器和重载器
click命令行工具
itsdangerous提供各种加密签名功能

二、Hello Flask!

1.第一个 Flask 程序

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello Flask!</h1>'

从 flask 包中导入 Flask 类,然后实例化这个类,传入 Flask 类构造函数的第一个参数是模块或包的名称,我们应该使用特殊变量 **__name__** ,程序的名称为 hello.py,则该变量的值为 hello。

然后,为函数附加 app.route() 装饰器,并传入 URL 规则作为参数,让URL与函数建立关联,这个过程我们成为注册路由。路由负责 URL 和函数的映射,这个函数叫做视图函数。

2. 为视图函数绑定多个 URL

@app.route('/hi')
@app.route('/hello')
def say_hello():
    return '<h1>Hello Flask!<h1>'

我们访问这两个 URL 都可以触发函数

3. 动态 URL

@app.route('/greet',defaluts={'name':'Programmer'})
@app.route('/greet/<name>')
def greet(name):
    return '<h1>Hello, %s!</h1>' % name
@app.route('/greet')
@app.route('/greet/<name>')
def greet(name='programmer'):
    return '<h1>Hello, %s!</h1>' % name

上面两段程序的效果是一样的,变量 name 的 默认值都是 programmer。默认值可以在装饰器 defaluts 参数传入字典来指定,也可以在函数参数中指定。

三、启动开发服务器

1. 启动服务器

命令: flask run

2. 设置环境变量

假如程序主模块的名称为 hello.py,Linux下命令 : export FLASK_APP=hello,Window下命令 : set FLASK_APP=hello

当 安装了 python-dotenv 时,可以在项目根目录下创建文件 .env 和 .flaskenv 两个文件来存储环境变量。

3. 服务器启动选项

使服务器对外可见:flask run --host=0.0.0.0

改变默认端口:flask run --port=8000

4. 设置运行环境

开发时,可以在 .flaskenv 文件中设置为 development,这会开启所有支持开发的特性:

FLASK_ENV=development

四、Python Shell

使用 flask shell 命令打开 Python Shell 自动包含程序上下文

为了正常运行程序,一些操作相关的状态和数据需要被临时保存下来,这些状态和数据被统称为上下文。在 flask 中,上下文分为程序上下文和请求上下文。

五、Flask 扩展

Flask 扩展即使用 Flask 提供的 API 接口编写的 Python 库,可以为 Flask程序添加各种各样的功能。

六、项目配置

在很多情况下,需要设置程序的某些行文,这时就需要使用配置变量。这些配置变量都通过 Flask对象的 app.config 属性作为统一的接口来设置和获取,它指向的 Config 类实际上是字典的子类,所以可以使用操作其他字典一样操作它。

  1. 像在字典中添加一个键值对一样来设置一个配置:

    app.config['ADMIN_NAME'] = 'Peter'
  2. 使用 update() 方法则可以一次加载多个值:

    app.config.update(
     TESTING=True,
     SECRET_KEY='某个字符串'
    )

    注意配置的名称必须是全大写的形式。

  3. 和操作字典一样,读取一个配置就是从 config 字典里通过将配置变量的名称作为键读取对应的值:

    value = app.config['ADMIN_NAME']

七、URL 与端点

使用 url_for() 函数获取 URL的优点是当前定义的 URL 规则被修改时,这个函数总会返回正确的 URL。在调用 url_for() 函数时,第一个参数为端点值。在 Flask 中,端点用来标记一个识图函数以及对应的 URL 规则,端点的默认值是视图函数名称。

如果一个视图函数的名称为 index, 视图函数对应的 URL 是 “/”,那么 url_for('index') 获取到的 URL 就是 “/”

如果 URL 含有动态部分,那么我们需要在 url_for() 函数里传入相应的参数。

@app.route('/hello/<name>')
def greet(name):
    return 'Hello %s!' % name

这时使用 url_for('greet',name='Jack') 得到的 URL 为 “/hello/Jack” 。

八、Flask 命令

创建自定义命令:

@app.cli.command()
def hello():
    click.echo('Hello,Human!')

执行 flask hello 命令,会输出 Hello,Human! 。

九、模板与静态文件

模板即包含程序页面的 html 文件,放在项目根目录中的 template 中。

静态文件即是需要在 html 文件中 加载的 CSS 和 JavaScript 文件,以及图片、字体文件等资源文件。放在 static 文件夹下。

十、Flask 与 MVC 架构

在 MVC 架构中,程序分为三个组件:数据处理(Model)、用户界面(View)、交互逻辑(Controller)。

严格说,Flask 并不是 MVC 架构的框架,因为它没有内置数据模型支持。

转载于:https://www.cnblogs.com/ldebug/p/9738841.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值