用Python手把手教你搭建一个web框架-flask微框架!
在之前的文章当中,小编已经教过大家怎么搭建一个Django框架,今天我们来探索另外的一种框架的搭建,这个框架就是web框架-flask微框架啦!首先我们带着以下的几个问题来阅读本文:
1、flask是什么?有些什么功能?
2、搭建web框架-flask微框架需要哪些工具和环境?
3、怎么来搭建?
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,完成后如下:
现在基本是一个空工程,现在打开控制台,输入以下命令,创建虚拟化环境:
virtualenv venv
控制台输出完成后,将会在当前目录中创建一个venv文件夹,里面是我们运行python的虚拟化环境,在这里我并没有指明使用哪种版本的python环境是因为当前系统默认的环境是python2.7,如果想使用python3.0以上可以参考前一篇文章virtualenv介绍及基本使用来完成。
现在要做的第二步就是启动当前的虚拟化环境,输入命令source venv/bin/active,完成后控制台将会如下所示:
(venv) localhost:flaskApp xiaxuan$ 表示我们的虚拟化环境启动成功,但是现在并不是表示当前pycharm中当前工程的工作环境就是venv中的虚拟化环境,这里要设置pycharm中的python interpreter改为当前项目的运行环境才行。
安装flask的命令如下:
pipinstallflask
由于虚拟化环境,所以不需要root权限,十分方便。
在安装完相应依赖,设置好python运行环境后,在项目根目录下新建requirements.txt文件,这个文件主要就是记载当前项目安装了那些依赖,文件内容如下:
flask==0.12Jinja2==2.9.5
这是目前安装的依赖,前面是包名,后面是版本号,由于这个的存在我们可以直接在项目没有安装这些package之前,将所需的package写进来,然后在控制台使用pip install -r requirements.txt,就可以将这些依赖全部安装进来。
3.2 搭建flask工作目录
一个完整的flask项目的完整目录以及基本的如下所示:
test: 测试文件的位置
templates: html文件存放位置
static: 静态文件css和js存放位置
views.py: 主要接口编写文件,目前是所有的接口都写在这里,但是实质上要进行一定的分模块写接口,这个涉及到的技术是blueprint,这个在后期进行讲解。
models.py: 对象的定义
run.py: 启动运行文件
config.py: 配置文件
manager.py: 用于启动程序以及其他的程序任务
以上就是简单的flask项目基本目录。
4. 具体程序编写
4.1源码
views.py:
上图提供两个接口,一个是渲染视图index.html,一个是返回json结果,较为简单,而在flask中接口的路由就是一个简简单单的注解app.route完成的,指定是哪一种http请求访问也是非常简单的,指定methods即可,methods是一个数组,即GET,POST可以同时在一个请求之中,但是我们在写接口的时候,一般都会区分清楚。
在上面有一个
from app import app,这个需要提一下,这个在app包中的init.py文件之中声明的,如下:
在这里声明了app对象,在views中我们引用了app,同时在下面一个文件run.py中,app起着启动整个项目的作用,run.py源码如下:
十分简单明了,app.run()整个项目便运行起来了,在这里运行的时候,项目是默认的端口为5000,如果需要指定端口,app.run()方法中指定port即可。
4.2 运行
启动run.py后,控制台如下:
控制台输出已经在5000端口上运行起来,现在我们请求http://localhost:5000,转向界面为:
这是先前views.py中的第一个接口,渲染index.html,index.html中的内容就是hello world。
访问第二个接口,url为http://localhost:5000/hello,结果如下:
返回json数据。
总结:
flask这种微框架搭建和运行都是一种比较简单的事情,但是在面对一些并发量比较高的场景的时候,基本就支撑不住了,后续讲述如何应对这一种场景。
在多模块项目编写的时候,接口就不能放在一个views.py文件之中,需要分模块存放,这个涉及到了blueprint技术,以后再讲这个
文章到此就要告一段落了,希望对各位有所帮助!
如果大家在学习Python的路上,或者打算学习Python需要学习资料,可以加群571799375,群里学习资料免费赠送大家喔!
本文来自网络,如有侵权,请联系小编删除!
用Python手把手教你搭建一个web框架-flask微框架!的更多相关文章
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- 用Python手把手教你搭一个Transformer!
来源商业新知网,原标题:百闻不如一码!手把手教你用Python搭一个Transformer 与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因而可以充 ...
- 手把手教你搭建一个 Elasticsearch 集群
为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎, ...
- MyBatis整合Spring+SpringMVC搭建一个web项目(SSM框架)
本文讲解如何搭建一个SSM架构的web站点 [工具] IDEA.SqlYog.Maven [简述] 该项目由3个模块组成:dao(数据访问层).service(业务处理层).web(表现层) dao层 ...
- 手把手教你搭建一个Elasticsearch集群
一.为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? (1)高可用性 Elasticsearch 作为一个 ...
- 手把手教你搭建Hive Web环境
了解Hive的都知道Hive有三种使用方式--CLI命令行,HWI(hie web interface)浏览器 以及 Thrift客户端连接方式. 为了体验下HWI模式,特意查询了多方的资料,都没有一 ...
- 『原创』手把手教你搭建一个实用的油耗App(一)
前言: 入行快10年,有点积蓄,三年前买了代步车.于是乎,汽车油耗开销就成了每个月都必须关注的问题.三年来,用过了无数油耗记录软件,比如最知名的“小熊油耗”,从第一次用,一直到最新一版,感觉越来越“臃 ...
- [转]手把手教你搭建Hive Web环境
了解Hive的都知道Hive有三种使用方式——CLI命令行,HWI(hie web interface)浏览器 以及 Thrift客户端连接方式. 为了体验下HWI模式,特意查询了多方的资料,都没有一 ...
- 手把手教你搭建一个跟vue官方同款文档(vuepress)
前言 VuePress 由两部分组成:第一部分是一个极简静态网站生成器 (opens new window),它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档而优化的默认主题 ...
随机推荐
- docker 在Windows下使用遇到的坑
1.大部分系统不支持直接安装docker for windows,只能使用docker toolbox,相当于在Windows上安装了一个linux的虚拟机 2.启动docker toolbox的时候 ...
- MapReduce编程入门实例之WordCount:分别在Eclipse和Hadoop集群上运行
上一篇博文如何在Eclipse下搭建Hadoop开发环境,今天给大家介绍一下如何分别分别在Eclipse和Hadoop集群上运行我们的MapReduce程序! 1. 在Eclipse环境下运行MapR ...
- Python踩坑之旅其二裸用os.system的原罪
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4.1 技术关键字 1.5 填坑总结 2. 前坑回顾 2.1 Linux中, 子进程拷贝父进程哪些信息 2.2 Agent常驻进程选择& ...
- Oracle批量SQL之 BULK COLLECT 子句
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎.通常可以在SELECT INTO.FETCH INTO以及RETURNING ...
- win10红警黑屏和无法打开的处理
原因:win10或者win7无法打红警的原因,除开软件本身坏了等情况,多半是因为显示比率不对不上和系统不兼容导致的处理方法是: 1.将快捷方式发送到桌面(只是为了方便打开,当然你也可以不发送到桌面,关 ...
- nodejs 实践:express 最佳实践(五) connect解析
nodejs 实践:express 最佳实践(五) connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需 ...
- C#基础文件file的各种套路
File的各种套路 //创建一个文件 //File.Create(@"C:\Users\SpringRain\Desktop\new.txt"); //Console.WriteL ...
- css3的transform ,2D变换
transformtransform的中文翻译就是变换,改变,改观,转换的意思 在css中的主要作用就是对一个div或元素进行样式的改变. 他的属性(变换方式)有:平移,旋转,缩放,扭曲transla ...
- Java面向对象(构造方法、this、super)
面向对象 今日内容介绍 u 构造方法 u this u super 第1章 构造方法 我们对封装已经有了基本的了解,接下来我们来看一个新的问题,依然以Person为例,由于Person中的属性都被pr ...
- <context:property-placeholder>标签实现参数剥离
<context:property-placeholder>标签提供了一种优雅的外在化参数配置的方式(可以是键值对的形式保存在.properties文件中),不过该标签在spring配置文 ...