Flask从零到一 1 | 虚拟环境和第一个flask程序

康成
• 阅读 1470

大约还有二十天假期时间,这二十天我准备跟进一个Flask入门系列,大致会分为10-12篇文章。虽然我以后不想做开发,但是Web开发热度还是挺高的,所以就用了一段时间学习了一下,下学期也会有与Web有关的课程,如果对Flask感兴趣的话,可以持续跟进,希望这个系列可以帮到伙伴们。

第一篇主要包括两个方面,一方面是学习Flask之前的准备工作,比如配置相应的环境以及下载一些工具;另一方面就是编写第一个Flask简易程序。

Flask是支持Python2 和 Python3两个版本的,但是在我接触Python的时候已经更新到3.6了,所以我也没有关注Python2。我相信伙伴们应该也大多都在用Python3,所以这个系列会以Python3为基础,Flask的版本使用最新的即可。

这里只对Flask做一个简要的介绍:Flask是一个微框架,本身相当于一个内核,只保留了核心功能:请求响应处理和模板渲染。这两个功能分别有Werkzeug和Jinja实现,Flask本身也包装了这两个依赖,然后Flask还拥有很多扩展包,用户可以根据自己的需求导入扩展包实现相应的功能,这也是Flask框架灵活的原因。

Git下载

首先对于Windows用户,推荐下载Git这个工具,虽然很多功能我们在终端也可以实现,但在某些方面上讲使用Git的命令会更加方便,而且它也可以用来记录编写程序的源码和文件的变动情况,Git的下载安装教程可以参考这篇博客:Windows系统安装教程

下载安装完成之后,在搜索栏找到Git Bash,运行时候输入git --version,如果出现对应的版本信息则代表安装成功。

Flask从零到一 1 | 虚拟环境和第一个flask程序

配置虚拟环境

虚拟环境是一种独立于Python全局环境的Python解释器环境,比如一个虚拟环境中的解释器版本可以为Python2,另一个的解释器版本可以为Python3,它们之间是不会相互干扰的,而且也不会受你电脑中Python环境的影响。

配置虚拟环境是很必要的操作,因为不同的程序依赖语言的版本可能会不同,但如果在一台电脑中下载多个版本Python解释器,就会导致全局环境杂乱,虚拟环境很好的解决了这个问题,也便于管理我们的程序。

Python3中内置的venv模块可以创建虚拟环境,首先在系统自带的cmd中通过cd指令进入到指定的文件中,需要注意的是这个路径不能包含中文,然后使用下面指令创建一个虚拟环境。

python -m venv env

Flask从零到一 1 | 虚拟环境和第一个flask程序

其中env为虚拟环境的名称,可以自己拟定。这时会在当前目录下生成一个包含了Python解释器的虚拟环境文件夹,然后在Scripts文件下有两个.bat文件,这两个文件就控制着激活虚拟环境和退出虚拟环境。

通过下面指令就可以激活虚拟环境和退出虚拟环境:

env\Scripts\activate#激活
env\Scripts\deactivate#退出

或者也可以直接进入Scripts目录下直接输入activate或者deactivae即可,当目录前出现下面这种小括号形式就代表激活虚拟环境成功。

(env) 

然后就可以通过pip在虚拟环境中安装Flask,不用指定版本,默认安装最新版本。

 pip install flask

第一个flask程序

编写一个flask程序是非常简单的,仅仅几行代码就可以实现,流程大致可以分为以下五步:

  • 1、从flask包中导入Flask类
  • 2、实例化Flask类,创建一个应用对象
  • 3、定义视图函数
  • 4、为视图函数添加装饰器(定义路由)
  • 5、启动flask程序
#从flask包中导入Flask类
from flask import Flask
#创建flask的应用对象
app = Flask(__name__)

@app.route('/')
def hello():
    """定义视图函数"""
    return 'Hello NaiTangMao'

if __name__ == "__main__":
    #启动flask程序
    app.run()

运行上面这段程序会给出下面的结果,我们先关注红字部分的网址,会发现这是我们本地主机的IP地址,在运行一个flask程序后,他会默认监听主机的5000端口。

Flask从零到一 1 | 虚拟环境和第一个flask程序
Copy一下网址利用浏览器打开就会出现我们视图函数中返回的信息:

Flask从零到一 1 | 虚拟环境和第一个flask程序

这个flask程序处理过程如下:

  • 1、首先用户启动程序,并访问对应的网址。
  • 2、服务器解析请求,识别装饰器中绑定的URL。
  • 3、匹配URL并调用对应的视图函数。
  • 4、获取视图函数的返回值,返回至客户端。

对于上面这几行代码需要掌握几个知识点,首先你应该明确app为Flask类实例化后创建的一个应用对象,但里面的__name__有什么作用呢?

__name__为当前模块名,因为flask程序在运行的时候需要静态文件和模板文件辅助,在你设置__name__之后,flask就会以当前模块(文件)所在目录为根目录,默认这个目录中的static为静态目录,templates为模板目录,因为是默认存在的,所以在根目录中并不会体现出来。不理解不要紧,后面还会涉及这两方面知识。

视图函数暂时不需要过多介绍,需要注意的是视图上面的装饰器app.route(),这个装饰器可以为视图函数绑定一个URL,当用户访问这个URL时会触发对应的视图函数,其中'/'代表根地址,我们还可以在根地址后设置额外路径,比如app.route('/hello')。

这时如果我们在访问原来那个网址就会出现Not Found的错误提示,此时必须要访问http://127.0.0.1:5000/hello才能触发视图函数。
Flask从零到一 1 | 虚拟环境和第一个flask程序
一个视图函数也可以同时绑定多个URL,这通过为视图函数添加多个装饰器实现:

@app.route('/')
@app.route('/hello')
def hello():
    """定义视图函数"""
    return 'Hello NaiTangMao'

也就是说现在不论我们访问http://127.0.0.1:5000/ 还是 http://127.0.0.1:5000/hello都可以触发这个视图函数。

综上为Flask入门系列的第一篇,主要介绍虚拟环境的配置以及简易flask程序构成部分的简要解析。

本文参考资料:
[1].《Flask入门教程》.李辉著
[2].https://www.bilibili.com/vide...
[3].Flask中英文档

如果你对这个系列感兴趣,欢迎关注公众号【奶糖猫】第一时间跟进后续更新~

点赞
收藏
评论区
推荐文章
Karen110 Karen110
3年前
盘点Python网页开发轻量级框架Flask知识(上篇)
前言今天来给大家说一个Python的轻量级web开发框架Flask,为什么要推荐它呢?当然是因为它够轻量级了,开发迅速是它的特点,当然它也有缺点,不过这里不说,因为既用它又说它差感觉不好。一、安装flaskpip install flask 需要注意的是,还有flake,那个是检查错误的模块,不要搞混了可以看到成功了,总共下载了四个模块,分别是对应的web开
Irene181 Irene181
4年前
小伙Python爬虫并自制新闻网站,太好玩了
大家好,我又来了,我是银牌厨师豆腐!我们总是在爬啊爬,爬到了数据难道只是为了做一个词云吗?当然不!这次我就利用flask为大家呈现一道小菜。Flask是python中一个轻量级web框架,相对于其他web框架来说简单,适合小白练手。使用Flask爬虫,教大家如何实时展示自己爬下来的数据到网页上。先给大家展示一下这个丑丑的网页↓(给个面子,别笑)演示三
Stella981 Stella981
3年前
Flask + Gunicorn + Nginx 部署
最近很多朋友都在问我关于Flask部署的问题,说实在的我很乐意看到和回答这样的问题,至少证明了越来越多人开始用Flask了。之前我曾发表过一篇在Ubuntu上用uwsginginx的Flask部署方法,说实在的uwsgi是个大坑可能用在Django上还好吧,不过用在Flask上未必就如此。至少,uwsgi是个极
Stella981 Stella981
3年前
Flask教程(十五)日志
软硬件环境windows1064bitanaconda3withpython3.7pycharm2020.1.2flask1.1.2简介flask日志使用标准的pythonlogging。所有与flask相关的消息都用ap
Stella981 Stella981
3年前
Flask, Django
1\.目录结构一般情况下,Django很系统、统一。Flask项目目录风格不同一,即使用上了蓝图。2\.数据库迁移Flask要用第三方extensions,而Django自带,这个很方便。3\.模块化Flask是用蓝图。Django可以自动生成pythonmanage.pystartapp<app_n
Stella981 Stella981
3年前
Flask框架
FLask框架的简单介绍Flask是一个基于Python开发并且依赖jinja2模板和WerkzeugWSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用
Stella981 Stella981
3年前
Flask做api+angularjs调用实现获取数据及删除的完整实例
在oschina开源中国学习到不少东西,今天回馈下.现用python框架flask做api很方便,angular用久了有依赖了,为方便后面的同学,给出个完整实例.FLASK部分,用到了flaskjson,和一个转json的方法当然你也可以用flask的api专用插件,但我在现实场景用的时间,有些地方不是很方便,大家如果是做app应用,可以用
Stella981 Stella981
3年前
Flask框架总结
Flask介绍:Flask是一个基于Python开发并且依赖jinja2模板和WerkzeugWSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助j
Stella981 Stella981
3年前
Python Flask 构建微电影视频网站
 “轻”是Flask的精髓,小型项目快速开发,大型项目毫无压力11课程导学及介绍12Windows环境搭建22MacOS环境搭建23第一Flask程序31项目分析及会员登录32标签电影上映预告数据模型
可莉 可莉
3年前
10w字!Django+Flask+经典Python数据分析合集
大伙可能都知道Python可以应用在很多方面,比如Web开发,小编我之前在学习这一块知识的时候,也苦于查找系统的资料。对于成熟的框架比如Flask、Django,如果有一套完整的内容体悉加上实际案例,学习起来还是很快的。最近我发现了一个优质的原创博主,公众号里写了很多原创的Django系列和Flask系列的文章。恰好人