Flask 框架 - 视图及路由 - 1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/apollo_miracle/article/details/82977069

1 学习目标

  1. 能够根据步骤安装虚拟环境

  2. 能够创建 Py2 和 Py3 版本的虚拟环境

  3. 能够使用 pip 命令安装指定版本 Flask 及其他扩展

  4. 能够写出 Flask 从对象中加载配置的代码

2 Flask简介

2.1 Web应用程序的本质

Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。

Web应用程序的本质

Web应用程序交互流程

 2.2 Web框架

Web框架是协助开发者快速开发 Web 应用程序的一套功能代码,开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码

例如:在某个区需要成立一家医院,有两种方式:

1.圈地,打地基,盖楼,装修,入驻

2.买楼,装修,入驻

为什么要用Web框架?

web网站发展至今,特别是服务器端,涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务逻辑上面。

使用框架的优点:

  • 稳定性和可扩展性强
  • 可以降低开发难度,提高开发效率。

总结一句话:避免重复造轮子

Python 中常用的 Web 框架有

  • flask
  • django
  • tornado

2.3 Flask

Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。

Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。

其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。

Flask常用扩展包:

  • Flask-SQLalchemy:操作数据库;
  • Flask-script:插入脚本;
  • Flask-migrate:管理迁移数据库;
  • Flask-Session:Session存储方式指定;
  • Flask-WTF:表单;
  • Flask-Mail:邮件;
  • Flask-Bable:提供国际化和本地化支持,翻译;
  • Flask-Login:认证用户状态;
  • Flask-OpenID:认证;
  • Flask-RESTful:开发REST API的工具;
  • Flask-Bootstrap:集成前端Twitter Bootstrap框架;
  • Flask-Moment:本地化日期和时间;
  • Flask-Admin:简单而可扩展的管理接口的框架

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

  1. 中文文档(http://docs.jinkan.org/docs/flask/
  2. 英文文档(http://flask.pocoo.org/docs/0.11/

3 虚拟环境

虚拟环境:python环境的复制。

3.1 为什么要搭建虚拟环境?

在开发过程中,当需要使用 python 的某些工具包/框架时需要联网安装

比如联网安装Flask框架flask-0.10.1版本

sudo pip install flask==0.10.1
  • 提示:使用如上命令, 会将 flask-0.10.1 安装到 /usr/local/lib/python2.7/dist-packages 路径下
  • 问题:如果在一台电脑上,想开发多个不同的项目,需要用到同一个包的不同版本,如果使用上面的命令,在同一个目录下安装或者更新,新版本会覆盖以前的版本,其它的项目就无法运行了。
  • 解决方案:虚拟环境

    • 作用虚拟环境可以搭建独立的 python 运行环境, 使得单个项目的运行环境与其它项目互不影响.

    • 所有的虚拟环境都位于/home/下的隐藏目录.virtualenvs

一个python环境中(python2.7),安装某个包,只能安装这个包的一个版本(新版本会覆盖以前的版本)。

3.2 虚拟环境的搭建

前提:保证Ubuntu联网(能够ping通www.baidu.com即可)

1.以管理员身份运行如下命令:

sudo pip install virtualenv

sudo pip install virtualenv

2.以管理员身份执行如下命令:

sudo pip install virtualenvwrapper

sudo pip install virtualenvwrapper

3.执行命令:mkvirtualenv  提示未找到命令,进入第4步

4.在Home家目录执行如下指令:mkdir .virtualenvs

创建好之后去修改.bashrc文件:vim .bashrc

在最后添加如下配置代码,如下图所示:

if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then

    export WORKON_HOME=$HOME/.virtualenvs

    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

    source /usr/local/bin/virtualenvwrapper.sh

fi

然后重新载入,执行:source .bashrc

那么将来创建的虚拟环境默认都是Python3了

3.3 测试创建虚拟环境:

默认就是创建的Python3的虚拟环境:mkvirtualenv py3_flask

也可以通过-p指定Python版本:mkvirtualenv -p python3 py3_flask2

如果想创建Python2版本的环境,使用如下命令:

执行workon命令敲回车,就可以看到所有的虚拟环境了

进入到某一个环境,执行命令:workon py3_flask就选中了当前的这个虚拟环境

安装flask,先选中虚拟环境,然后执行如下命令:pip install flask==0.10.1命令

查看虚拟环境中安装的包: pip freeze

使用虚拟环境总结:

# 创建的Python3的虚拟环境:
mkvirtualenv py3_flask

# 删除虚拟环境的命令 :
rmvirtualenv 虚拟环境名称

# 选中当前的这个虚拟环境:
workon py3_flask

# 安装flask:
pip install flask==0.10.1

# 查看虚拟环境的命令:
workon 两次tab键

# 使用虚拟环境的命令:
workon 虚拟环境名称

# 退出虚拟环境的命令:
deactivate

# python3版本下安装flask-0.10.1的包:
pip install 包名称

# 查看虚拟环境中安装的包:
pip freeze

4 HelloWorld程序

4.1 创建 Python 项目

打开 Pycharm,创建 Pure Python 类型的项目,创建项目完成之后选择之前创建的 py3_flask 作为虚拟环境

友情提示:第 4 步路径可以通过在指定虚拟环境下,输入 which python 获得

4.2 示例

新建文件 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()
  • HelloWorld 整体编写

5 相关配置参数

在上一节实现了一个最简单的 Flask 应用程序,只使用了7行(最基本的)代码,接来对 Flask 程序的创建,运行配置做进一步的了解,具体有:

  • Flask 程序初始化参数
  • Flask 程序相关配置加载方式
  • app.run() 参数

5.1 初始化参数

Flask 程序实例在创建的时候,需要默认传入当前 Flask 程序所指定的包(模块),接下来就来详细查看一下 Flask 应用程序在创建的时候一些需要我们关注的参数:

import_name

  • Flask程序所在的包(模块),传 __name__ 就可以
  • 其可以决定 Flask 在访问静态文件时查找的路径

static_path

  • 静态文件访问路径(不推荐使用,使用 static_url_path 代替)

static_url_path

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

static_folder

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

template_folder

  • 模板文件存储的文件夹,可以不传,默认为 templates

5.2 程序加载配置

在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:

1.从配置对象中加载(常用)

app.config.form_object()

2.从配置文件中加载

app.config.form_pyfile()

3.从环境变量中加载(了解)

app.config.from_envvar()

以下演练以设置应用程序的 DEBUG(调试模式) 为例,设置应用为调式模式这后,可以实现以下功能:

  1. 程序代码修改后可以自动重启服务器
  2. 在服务器出现相关错误的时候可以直接将错误信息进行抛出到控制台打印

5.3 使用方式

5.3.1 配置对象

从配置对象中加载,创建配置的类,代码如下:

# 配置对象,里面定义需要给 APP 添加的一系列配置
class Config(object):
    DEBUG = True


# 创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)

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

运行测试,在修改代码之后直接保存,会自动重启服务器

5.3.2 配置文件

创建配置文件 config.ini,在配置文件中添加配置

使用代码去加载配置

# 创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)

# 从配置文件中加载配置
app.config.from_pyfile("config.ini")

5.3.3 环境变量(了解)

编辑运行的相关配置

config.ini路径如何copy.如下

使用代码去加载配置

# 创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
# 加载指定环境变量名称所对应的相关配置
app.config.from_envvar('FLASKCONFIG')

5.4 直接设置配置

5.5 读取配置

  • app.config.get()
  • 在视图函数中使用 current_app.config.get()

注:Flask 应用程序将一些常用的配置设置成了应用程序对象的属性,也可以通过属性直接设置/获取某些配置:app.debug = True

5.6 app.run的参数

可以指定运行的主机IP地址,端口,是否开启调试模式

app.run(host="192.168.21.23", port=5000, debug=True)

注:此时 127.0.0.1 IP地址就不能用了

解决方案:可以配置一个万能ip:0.0.0.0

app.run(host="0.0.0.0", port=5000, debug=True)

 

猜你喜欢

转载自blog.csdn.net/apollo_miracle/article/details/82977069