Windows 10家庭中文版,Python 3.6.4

Flask官网开始学起。

介绍

Flask是一个Python的Web开发微框架,基于WerkzeugJinja2模块(and good intentions)

开源,使用的license是BSD

--

Werkzeug是一个综合的WSGI Web应用程序库,它包括:

-交互式调试器

-全功能的request对象

-可以包装其它WSGI应用和处理流式数据的response对象

-路由系统:匹配URL和终端(endpoint)、为终端生成URL

-HTTP工具:处理实体(entity)标签、缓存控制、日期、用户代理、cookies、文件等更多内容

-一个本地开发用的threaded的WSGI服务器

-模拟HTTP请求的测试客户端:测试期间不需要运行服务器

-Unicode aware (怎么翻译?能识别Unicode字符?)

-不强制任何依赖,由用户选择模板引起、数据库适配器,甚至如何处理请求

可用于多种终端用户应用,比如博客、wiki、公告板等。

Flask封装了Werkzeug,在Flask为定义强大的应用提供更多的结构和模式(要重点领悟!)时用Werkzeug去处理WSGI的细节。

说明,Werkzeug是德语词汇,通过Google翻译得到的结果是“工具”。

--

Jinja2是使用纯Python写的模板引擎。

它提供了一个受Django启发的非XML语法,还提供了内联表达式和一个可选的沙箱环境。

说明,jinja被Google翻译为“神社”,因为它检测到是日语,官网也显示为神社。BTW,神社和模板引擎 有什么抽象联系?

--

安装

使用pip安装,我要安装在Python 3中,因此,命令如下:

>pip3 install flask

注意,这里的flask是全小写,官网中的有问题,如果用“Flask”的话,安装失败,原因是“连接超时”。

安装失败截图:

安装成功截图:

从安装成功的截图可以看到,安装Flask不仅仅安装了Flask、Werkzeug、Jinja2这三个模块,还有click-6.7、itsdangerous-0.24、MarkupSafe-1.0。

安装成功后,可以在Python的Lib\site-packages、Scripts文件夹下找到“Flask”开头的文件夹或文件:

其中,Scripts文件夹(已经添加到Windows环境变量Path中)下的flask.exe是Flask应用的通用工具脚本程序,可用于启动Flask应用。

在Windows命令行窗口中输入flask或flask --help可以查到它的使用说明(其中Usage前面部分可以忽略,不应该出现才是(更应该研究

研究,稍后讲讲)):

查看Flask版本:

flask --version

我的是1.0.2

获取帮助:

flask --help

flask的三个命令,截止此文发布时,我仅用过run,用来运行Flask应用。

吐槽,在Usage里面,OPTIONS用中括号括起来,按照惯例,这个是可有可无的,而COMMAND没有括起来,按照惯例,是必须

有的,可是,实际用法却不是如此,请按照实际用法为准。

启动HelloWorld程序 & 访问

前面练习了Django的HelloWorld的程序时,一下子就建立了好多文件,管理的、配置的、URL规则的、SQLite数据库、WSGI的……

可使用Flask建立一个HelloWorld程序就不需要那么“臃肿”了,参考官网的例子,编写一个hello.py文件,源码如下:

 from flask import Flask # 导入flask模块下的Flask类
app = Flask(__name__) # 建立Flask类实例,每一个Flask类实例都是一个Flask应用 @app.route("/") # 定义其下一行定义的函数hello()可以处理的URL P.S.这个@app是Annotation
def hello():
return "Hello World!" # 直接返回文本

说明,上面的源码在Flask的Quickstart文档中有更详细的介绍。

程序编写完毕,保存到我的工程目录HelloWorld下,命令行工具切换到我的工程目录下,设置好环境变量FLASK_APP即可执行程序——启动第一个Flask应用:

启动Flask应用的命令:

...\HelloWorld>set FLASK_APP=hello.py

...\HelloWorld>flask run

从上面的截图来看,Flask应用是启动成功的——Running on http://127.0.0.1:5000/,并使用本机的5000端口。

还有一个要注意,倒数第二行的——Debug mode: off,调试模式关闭,这个可以通过设置环境变量FLASK_DEBUG为development

开启(开启之后怎么做调试呢?还需研究)。

Flask应用已启动,接下来,打开浏览器(Google的Chrome浏览器,现在都不用其它的了,难道它要统一全球?)检查是否已真正启动:

结果显示OK!

至此,我的第一个Flask应用就算完成了。

当然,这离精通Flask还有很长很长的路要走,估计得上月吧!

其它

为什么用Flask呢?怎么不用Django呢?还有Tornado的?三个都是基于Python来开发Web应用的(或许表述有错误,请指正),三者是否要对比下?

这个时候,可以去网上看看,可以找到不少这方面的讨论(讨论让人聪慧)。

参考:

Django和Flask这两个框架在设计上各方面有什么优缺点?

flask or django or tornado

....

还有更多好文章,可以尽情搜索,毕竟,已经有先行者,咱们这些后来者就“站在”他们的基础上前进吧!

其实,这么多Python的Web框架,熟悉(不敢说精通)一两个,知道三四个就好了!要知,Python还有更多更精彩的等着咱呢!

Flask:初见的更多相关文章

  1. Flask初见

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSIG工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 .Flask使用 BSD 授权. Flask也被称为 “m ...

  2. Flask+pin

    Flask+SSTI的新火花 记一次buu刷题记和回顾祥云杯被虐出屎的经历.题目:[GYCTF2020]FlaskApp 一 题目初见 朴实无华的页面,一个base64的小程序页面 看到有提示. 我就 ...

  3. flask+sqlite3+echarts2+ajax数据可视化

    前提: 准备Python + Flask+Sqlite3的平台环境(windows系统) 前面一节介绍flask怎么安装了,剩下sqlite3下载后解压,然后环境变量添加解压路径就行了 附加下载地址: ...

  4. flask+sqlite3+echarts2+ajax数据可视化报错:UnicodeDecodeError: 'utf8' codec can't decode byte解决方法

    flask+sqlite3+echarts2+ajax数据可视化报错: UnicodeDecodeError: 'utf8' codec can't decode byte 解决方法: 将 py文件和 ...

  5. Windows下快速安装Flask的一次经历

    前提: 1.已安装python版本(一般都是2.X) 2.已安装easy_install python安装,记得配置Python的环境变量,例如:我的直接在Path上加 G:\Python 验证安装P ...

  6. 使用Flask设计带认证token的RESTful API接口[翻译]

    上一篇文章, 使用python的Flask实现一个RESTful API服务器端  简单地演示了Flask实的现的api服务器,里面提到了因为无状态的原则,没有session cookies,如果访问 ...

  7. 使用python的Flask实现一个RESTful API服务器端[翻译]

    最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. 本文将会使用python的Flask框架轻松实现一个RESTful的服务 ...

  8. python flask (一)

    from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World ...

  9. flask源码分析

    本flask源码分析不间断更新 而且我分析的源码全是我个人觉得是很beautiful的 1 flask-login 1.1 flask.ext.login.login_required(func),下 ...

随机推荐

  1. 【BZOJ3551】Peaks加强版(Kruskal重构树,主席树)

    [BZOJ3551]Peaks加强版(Kruskal重构树,主席树) 题面 BZOJ Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相 ...

  2. 【转】嵌入式Linux驱动面试题三道

    题一: Linux设备中字符设备与块设备有什么主要的区别? 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性.字符设备驱动程序通常至少实现open,cl ...

  3. Alpha 冲刺 —— 十分之三

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助后端界面的开发 搭建项目运行的服务器环境 ...

  4. kafka问题集(二):__consumer_offsets topic的分区中有一个分区数据很多,多达1T

    仅个人实践中所遇到的问题,若有不对的,欢迎交流! 一.场景描述 kafka集群中有几台突然挂了,后台日志显示设备空间满了,消息无法写入__consumer_offsets topic的分区中了.查看k ...

  5. 【BZOJ2654】tree

    Time Limit: 30 Sec Memory Limit: 512 MB Description ​ 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树 ...

  6. 【SDOI2015】序列统计 解题报告

    2119: [BZOJ3992][SDOI2015]序列统计 Description 小\(C\)有一个集合\(S\),里面的元素都是小于\(M\)的非负整数. 他用程序编写了一个数列生成器,可以生成 ...

  7. python之旅:迭代器、生成器、面向过程编程

    1.什么是迭代器? 1.什么是迭代器 迭代的工具 什么是迭代? 迭代是一个重复的过程,每一次重复都是基于上一次结果而进行的 # 单纯的重复并不是迭代 while True: print('=====& ...

  8. python基础之面向对象01

    什么是面向对象? 所谓面向对象就是将那些具有共同特质的事物组成一个类(Class),在类中为这些特质定义一个个方法(函数). 具体一点,比如说英雄联盟.在英雄联盟中我们可以把所有的英雄划分为一个英雄类 ...

  9. django 线上教育平台开发记录

    1.环境搭建 2.新建项目 1).首先通过 django-admin 新建一个项目,(例如项目名为mxonline) django-admin startproject mxonline 运行后会出现 ...

  10. 洛谷 p2530 化工场装箱员(资源型)

    化工场装箱员 https://www.luogu.org/problem/show?pid=2530 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的 ...