• [译] 第三天:Flask


    前言

    最近Packtpub联系到我,让我给他们发布在Falsk上的新书写书评,一本关于很流行的Python 框架的书。书名叫Flask及时Web开发》Instant Flask Web Development,作者是Ron DuPlain. 我技术挑战的第三天,决定来学学Flask.在这篇博客里,首先来谈谈Flask框架基础,再提供一小段书评。我会在OpenShift上给出一个示例程序。Flask对我来说并不陌生,以前用它写过几个应用。这次就当温故知新。

    给还不知道这个系列的小伙伴说明一下,我在进行一项30天学习30种技术的挑战,每天我会学一门新技术,再把所学写成博客,并介绍怎样使用新工具。有些技术不能在一天覆盖完,我会多花几天,分开讨论不同的章节。

    什么是Flask?

    我来给还不了解Flask的小伙伴介绍一下。Flask是一个轻量级的web应用框架,使用Python编写。这里的微框架并不像其他所说的所有的代码都放在一个文件里面。它实际是指简单的小型框架。我们可以从一个简单的文件架构开始。等熟悉了之后,可以使用它的模板和扩展功能。Flask并没有提关于文件架构的建议,不过待会我们可以来讨论一下这书里建议的文件架构。

     

    用一段代码来直观感受一下吧:

    from flask import Flask
    app = Flask(__name__)
     
    @app.route('/', defaults={'name':"Guest"})
    @app.route('/' , methods=['GET'])
    def say_hello(name):
        return "Hello " + name
     
    if __name__ == "__main__":
        app.run(debug=True)

    这是一段简单又直观的代码,来欣赏一下。我们来解析这段精短的代码:

    1. 第一行,我们导入了Flask类,以便创建Flask 程序的实例。
    2. 第二行,创建Flask类的实例,这是一个WSGI应用实例。WSGI(Web Service      Gateway Interface)Web服务器网关接口,是搭建Web程序的Python标准。Flask通过参数找到程序的静态文件和模板。在这个示例中,我们通过name 传递,让Flask用当前模块存放资源文件。
    3. 接着我们定义了几个"/"url映射路径,第一个是跟路径"/",后面一个是和它相关的比如/shekhar,/abc等。对于'/',我们默认设置为访客"Guest"。如果用户对http://localhost:5000/提出请求,他可以看到"Hello      Guest"的问候,如果对http://localhost:5000/shekhar请求,则能看到"Hello      shekhar".
    4. 最后我们用python app.py命令来启动服务,运行程序。把以上代码复制到app.py里,通过设置Debug=True启动调试。调试模式下,如果出现未知错误,可以在浏览器里交互调试。调试模式的另外一个好处是它可以自动加载更新。我们可以在后台环境开启调试,并保持应用继续工作。这就提供了一个很好的生产环境。随便问问Java开始者自动加载的好处:)

     

    有几点关于Flask值得了解的: 

    1. FlaskArmin Ronacher2010年创建。
    2. Flask的灵感来自Sinatra(创建简洁Web程序的Ruby框架)
    3. Flask基于两个库,Werkzeug(PythonWSGI功具库)Jinja2(模板引擎)
    4. Flask带有合理缺省值的配置值和惯例。

    我为什么关注Flask

    我学习Flask的原因:

    1. 易学:我做了8年Java软件开发,学习Python基础后,我想做做Web开发。像我上面描述的示例一样,Flask是一款简单易用的框架,它自然符合我的需要,也让我更快进行的开发。
    2. 有非常活跃又充满朝气的社区:我问了几个用Python的小伙伴,他们都推荐我从Flask开始。谷歌搜索结果也都说Flask是最适合的Python Web 开发框架。
    3.  快速创建REST API: 我想学一种能简单实现REST[REpresentational      State Transfer,表述性状态转移]服务的框架,上面的示例了用Flask jsonify方法能很方便的返回json文档。以后的Web应用架构基于符合REST后端,用新式JavaScript MV*框架的前端。
    4. 280多页完美的文档介绍,包含很多示例。
    5. Flask遵循惯例优先原则。它有很多合理的缺省值,比如静态资源放静态文件中。大部分默认值可以重写。

    关于《Flask及时Web开发》的细节

    现在我们来看看这本书的一些相关信息。

    1. 这本书如菜谱一样,每部分你都能参照进行程序开发,总共78页。
    2. 只需11美元。
    3. 这本书由Flask核心成员编写。

    我对这本书感兴趣的地方

    1. 从搭建虚拟环境开始是使用python的正确方法,避免破坏python主环境。使得我们可以在不同的程序用不同版本的python.
    2. 应用最佳实践,如程序适合的文件架构,即时Flask是微架构,我们也要对程序定义合适的层,这对开发企业级应用有好处。
    3. 这本书讨论了我还不了解的Flask功能和扩展,讲述了Flask-Script脚本扩展,Flask使得Flask程序可以支持写外部脚本。
    4. 详细讲述了WTForms, WTForms对写表单程序有帮助。

    有待改进的地方

    1. 有几章写的不是很清晰,对初学者没有提供太多的上下文。我不明白为什么要在Flask应用里用二级域名。
    2. 没有像PostgresqlMysql这样的真实数据库。虽然作者提到了用其他数据库URI连接PostgreSQLMysql,但是我没有看到示例。我跟喜欢用真实数据库而不是内置的。使用内置数据库的好处是对初学者更简单上手。
    3. 没有讨论REST服务:REST服务对如今程序至关重要。用Flask的一个优势就在于我们能很方便的采用REST服务。
    4. 没有像Flask使用MongoDB那样讲怎样使用NoSQL.
    5. Flask框架支持很棒的单元测试,作者没有提到。
    6. 没有提到云开发。在这篇博客里,我会展示一下怎样用OpenShift来发布书里的示例应用。

    我该买这本书吗?

    这本书很适合Flask初学者,且想写传统的基于RDBMS Web应用。

    开始使用Flask

    在开始之前我们需要在机器上安装Pythonvirtualenv. 我这里使用的Python2.7的版本。按一下方式安装Flask.

        $ mkdir schedulingapp
        $ cd schedulingapp/
        $ virtualenv venv --python=python2.7
        $ . venv/bin/activate
        $ pip install flask

    以上命令中,我们先创建了一个示例程序的路径,激活了virtualenv. Virtualenv可以避免破坏python主程序。这使得我们可以对不同程序用不同版本的python.最后,我们安装了Flask.
    命令 pip install flask 会安装最新稳定的Flask框架。

    OpenShift上发布示例程序

    书里的示例应用是一个简单的预约程序。我们可以注册账号,登陆后创建,编辑,显示预约。执行一下命令在本机上运行程序。

        $ git clone https://github.com/shekhargulati/instant-flask-web-development-book-app.git scheduleapp
        $ cd scheduleapp
        $ virtualenv venv --python=python2.7
        $ . venv/bin/activate$ pip install -r requirements.txt
        $ python manage.py create_tables
        $ python manage.py runserver

    执行后程序会在http://127.0.0.1:5000上运行,用户可以注册并登陆使用。

    这样不错,不过我想把程序发布在云上。我会把它发布在OpenShift上。OpenShift是一个公开的,可扩展的开源服务平台。 

    前提准备

    在建这个应用之前,需要几点准备:

    1. OpenShift上注册。OpenShift完全免费,红帽给每个用户免费提供了3Gears来运行程序。目前,这个资源分配合计有每人1.5GB内存,3GB磁盘空间。
    2. 在本机安装rhc 客户端工具rhcruby gem包,所以你需要安装1.8.7或以上版本的ruby。输入
      sudo gem install rhc

      来安装rhc,如果你已经安装了,确保那是最新的。要更新rhc,输入

      sudo gem update rhc.

      想了解rhc command-line 工具,更多帮助参考https://openshift.redhat.com/community/developers/rhc-client-tools-install。

    3. rhc 安装命令安装OpenShift. 执行命令可以帮你创建空间,上传ssh 密钥到OpenShift服务器。

    发布应用

    OpenShift上发布应用,只需输入一下命令:

        rhc create-app schedapp python-2.7 postgresql-9.2 --from-code=https://github.com/shekhargulati/schedapp-openshift.git

    它会执行所有从创建程序,到设置公共DNS, 到创建git私有仓库,最后用Github仓库的代码发布应用。程序运行在http://schedapp-shekhargulati.rhcloud.com/

    这就是今天的,继续给反馈吧!

    原文:https://www.openshift.com/blogs/day-3-flask-instant-python-web-development-with-python-and-openshift

  • 相关阅读:
    手写编译器之词法分析器一
    手写编译器之前
    PAT(A) 1005. Spell It Right (20)
    PAT(A) 1001. A+B Format (20)
    PAT(A) 1073. Scientific Notation (20)
    PAT(A) 1061. Dating (20)
    PAT(A) 1058. A+B in Hogwarts (20)
    PAT(A) 1027. Colors in Mars (20)
    PAT(A) 1019. General Palindromic Number (20)
    PAT(A) 1031. Hello World for U (20)
  • 原文地址:https://www.cnblogs.com/endless-on/p/3471810.html
Copyright © 2020-2023  润新知