zoukankan      html  css  js  c++  java
  • Flask:初见

    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的Libsite-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文件,源码如下:

    1 from flask import Flask # 导入flask模块下的Flask类
    2 app = Flask(__name__) # 建立Flask类实例,每一个Flask类实例都是一个Flask应用
    3 
    4 @app.route("/") # 定义其下一行定义的函数hello()可以处理的URL P.S.这个@app是Annotation
    5 def hello():
    6     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还有更多更精彩的等着咱呢!

  • 相关阅读:
    聊聊WS-Federation
    用双十一的故事串起碎片的网络协议(上)
    责任链模式的使用-Netty ChannelPipeline和Mina IoFilterChain分析
    最小化局部边际的合并聚类算法(中篇)
    最小化局部边际的合并聚类算法(上篇)
    UVaLive 7371 Triangle (水题,判矩形)
    UVaLive 7372 Excellence (水题,贪心)
    POJ 3312 Mahershalalhashbaz, Nebuchadnezzar, and Billy Bob Benjamin Go to the Regionals (水题,贪心)
    UVa 1252 Twenty Questions (状压DP+记忆化搜索)
    UVa 10817 Headmaster's Headache (状压DP+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/luo630/p/9050535.html
Copyright © 2011-2022 走看看