python flask搭建web应用教程


Posted in Python onNovember 19, 2019

python flask搭建web应用教程

1.flask介绍

2.所需工具和环境

3.搭建flaskApp

4.具体程序编写

5.综上

1.flask介绍

flask是一款十分轻量级的python Web应用框架,也被认为是一种微框架,我最初喜欢使用是因为flask中提供的那一套使用的注解跟我当时在公司中使用java开发的系统,里面使用的restful的框架jersey的用法比较像,都十分方便,简洁,等到我熟悉使用flask框架之后,就挺喜欢这种微框架了,使用方便,配置简单,也可以进行克重扩展,满足各自的需求,其中在这些里面还有一个flask restplus,将swagger工具整合到python里面,在进行相应测试的时候十分方便,这个放到下一期再讲。

2.所需工具和环境

这一次运行flask需要使用的flask环境就不在物理机上安装运行了,直接使用上一篇讲述的virtualenv来安装flask,写出来的app demo都是依赖在虚拟环境运行的,以下是我们这次演示所需要的python工具和相应包。

pycharm 2016

virtualenv

pytohn 2.7

flask

以pycharm作为python ide, virtualenv以python 2.7创建我们的python运行环境,并用 pip install flask,环境搭建基本就完成了,下面是具体流程。

3.搭建flaskApp

3.1 设置虚拟化环境

打开pycharm,新建工程命名为flaskApp,完成后如下:

python flask搭建web应用教程

现在基本是一个空工程,现在打开控制台,输入以下命令,创建虚拟化环境:

virtualenv venv

控制台输出完成后,将会在当前目录中创建一个venv文件夹,里面是我们运行python的虚拟化环境,在这里我并没有指明使用哪种版本的python环境是因为当前系统默认的环境是python2.7,如果想使用python3.0以上可以参考前一篇文章virtualenv介绍及基本使用来完成。

现在要做的第二步就是启动当前的虚拟化环境,输入命令source venv/bin/active,完成后控制台将会如下所示:

python flask搭建web应用教程

(venv) localhost:flaskApp xiaxuan$ 表示我们的虚拟化环境启动成功,但是现在并不是表示当前pycharm中当前工程的工作环境就是venv中的虚拟化环境,这里要设置pycharm中的python interpreter改为当前项目的运行环境才行。

安装flask的命令如下:

pip install flask

由于虚拟化环境,所以不需要root权限,十分方便。

在安装完相应依赖,设置好python运行环境后,在项目根目录下新建requirements.txt文件,这个文件主要就是记载当前项目安装了那些依赖,文件内容如下:

flask==0.12
Jinja2==2.9.5

这是目前安装的依赖,前面是包名,后面是版本号,由于这个的存在我们可以直接在项目没有安装这些package之前,将所需的package写进来,然后在控制台使用pip install -r requirements.txt,就可以将这些依赖全部安装进来。

3.2 搭建flask工作目录

一个完整的flask项目的完整目录以及基本的如下所示:

python flask搭建web应用教程

test: 测试文件的位置

templates: html文件存放位置

static: 静态文件css和js存放位置

views.py: 主要接口编写文件,目前是所有的接口都写在这里,但是实质上要进行一定的分模块写接口,这个涉及到的技术是blueprint,这个在后期进行讲解。

models.py: 对象的定义

run.py: 启动运行文件

config.py: 配置文件

manager.py: 用于启动程序以及其他的程序任务

以上就是简单的flask项目基本目录。

4. 具体程序编写

4.1源码

views.py:

# cong:utf-8

from flask import jsonify
from flask import render_template

from app import app


@app.route("/")
def index():
  return render_template("index.html")


@app.route("/hello", methods=['GET', ])
def hello():
  return jsonify(msg="hello world!")

上图提供两个接口,一个是渲染视图index.html,一个是返回json结果,较为简单,而在flask中接口的路由就是一个简简单单的注解app.route完成的,指定是哪一种http请求访问也是非常简单的,指定methods即可,methods是一个数组,即GET,POST可以同时在一个请求之中,但是我们在写接口的时候,一般都会区分清楚。

在上面有一个

from app import app,这个需要提一下,这个在app包中的init.py文件之中声明的,如下:

# coding:utf-8

from flask import Flask

app = Flask(__name__)

from app import views

在这里声明了app对象,在views中我们引用了app,同时在下面一个文件run.py中,app起着启动整个项目的作用,run.py源码如下:

# coding:utf-8
from app import app

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

十分简单明了,app.run()整个项目便运行起来了,在这里运行的时候,项目是默认的端口为5000,如果需要指定端口,app.run()方法中指定port即可。

4.2 运行

启动run.py后,控制台如下:

python flask搭建web应用教程

控制台输出已经在5000端口上运行起来,现在我们请求http://localhost:5000,转向界面为:

python flask搭建web应用教程

这是先前views.py中的第一个接口,渲染index.html,index.html中的内容就是hello world。

访问第二个接口,url为http://localhost:5000/hello,结果如下:

python flask搭建web应用教程

返回json数据。

5. 综上

flask这种微框架搭建和运行都是一种比较简单的事情,但是在面对一些并发量比较高的场景的时候,基本就支撑不住了,后续讲述如何应对这一种场景。

在多模块项目编写的时候,接口就不能放在一个views.py文件之中,需要分模块存放,这个涉及到了blueprint技术,在下一期中将讲述这个。

以上这篇python flask搭建web应用教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
更改Python命令行交互提示符的方法
Jan 14 Python
Python基于pygame实现的font游戏字体(附源码)
Nov 11 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
python的concat等多种用法详解
Nov 28 Python
python for 循环获取index索引的方法
Feb 01 Python
Python中类的创建和实例化操作示例
Feb 27 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
利用python查看数组中的所有元素是否相同
Jan 08 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 #Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 #Python
python tornado修改log输出方式
Nov 18 #Python
Python3常用内置方法代码实例
Nov 18 #Python
python tornado使用流生成图片的例子
Nov 18 #Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 #Python
python 实现绘制整齐的表格
Nov 18 #Python
You might like
Zend的Registry机制的使用说明
2013/05/02 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
javaScript基础详解
2017/01/19 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
JS中的多态实例详解
2017/10/15 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
Python入门篇之正则表达式
2014/10/20 Python
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
python字符串循环左移
2019/03/08 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
python中有帮助函数吗
2020/06/19 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
授权委托书样本
2014/04/03 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书