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还有更多更精彩的等着咱呢!

  • 相关阅读:
    RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题
    在线教育web无插件点播平台EasyDSS在上传部分点播文件出现无法观看问题如何修复?
    RTMP协议Web直播点播服务平台EasyDSS增加获取录像指定时间的m3u8播放地址
    RTMP协议视频平台EasyDSS编译过程中Go语言异步信息处理设计与实现
    在线课堂web无插件直播点播平台EasyDSS播放指定时间段的录像报404是什么原因?
    推流直播如何通过EasyDSS推流将内网EasyGBS视频流推到公网直播间进行直播?
    RTMP协议视频平台EasyDSS开发中如何通过Go语言 gorm 框架钩子函数精简代码?
    POJ1740 A New Stone Game 博弈论基础题 男人8题
    HDU1847 博弈论 水题
    POJ 2763 Housewife Wind LCA基础题
  • 原文地址:https://www.cnblogs.com/luo630/p/9050535.html
Copyright © 2011-2022 走看看