Flask学习_Day1_前言、安装、快速上手之运行+调试模式

2019-5-24    开坑~

Flask学习:https://dormousehole.readthedocs.io/en/latest/

 学习内容:前言、安装、快速上手之运行+调试模式

##########################################################################

依赖:

Jinja2: Flask使用jinja2作为框架的模板系统

  Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的。

  click:http://jinja.pocoo.org/docs/2.10/

Werkzeug:Werkzeug是PythonWSGI规范的实用函数库。使用广泛,基于BSD协议.。

  click:http://werkzeug.palletsprojects.com/en/0.15.x/

MarkupSafe:与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击。

  “MarkupSafe实现了一个转义字符的文本对象,因此可以安全地在HTML和XML中使用。 替换具有特殊含义的字符,以便它们显示为实际字符。 这减轻了注入攻击,意味着可以安全地在页面上显示不受信任的用户输入。”

  click:https://pypi.org/project/MarkupSafe/

ItsDangerous:保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie.

  “有时您只想将一些数据发送到不受信任的环境。 但如何安全地做到这一点? 诀窍涉及签署。 只有您知道密钥,您才能对您的数据进行加密签名并将其交给其他人。 当您获得数据时,您可以轻松确保没有人篡改它。当然,接收器可以解码内容并查看包,但除非他们也有你的密钥,否则他们不能修改内容。 因此,如果你保持密钥的秘密和复杂,你会没事的。

  在内部,itsdangerous默认使用HMAC和SHA1进行签名,并将实现基于Django签名模块。 但它也支持JSON Web签名(JWS)。 该库是BSD许可

  click:https://pythonhosted.org/itsdangerous/

Click:是一个命令行应用的框架。用于提供 flask 命令,并允许添加自定义管理命令。

  “Click是一个Python包,用于以可组合的方式创建漂亮的命令行界面,只需要很少的代码。 这是“命令行界面创建工具包”。 它具有高度可配置性,但具有开箱即用的合理默认值。它旨在使编写命令行工具的过程快速而有趣,同时还防止因无法实现预期的CLI API而导致的任何挫折。

  有三点:

任意嵌套命令

自动帮助页面生成

支持在运行时延迟加载子命令

  click:https://click.palletsprojects.com/en/7.x/

###########################################################################

前言:用途与目的

  1)微小、强大、灵活、可拓展

  2)配置和惯例:刚起步的时候 Flask 有许多带有合理缺省值的配置值和惯例。按照惯例, 模板和静态文件存放在应用的 Python 源代码树的子目录中,名称分别为 templates 和 static 。惯例是可以改变的,但是你大可不必改变, 尤其是刚起步的时候。

  3)Flask中的本地线程对象:Flask 项目对于本地线程是直言不讳的,没有一点隐藏的意思,并且在使用 本地线程时在代码中进行了标注和说明。

  4)做网络开发时要谨慎  “Flask 可以防御 现代 Web 应用最常见的安全攻击:跨站代码攻击( XSS )。 Flask 和 下层的 Jinja2 模板引擎会保护你免受这种攻击,除非故意把不安全的 HTML 代码放进来。但是安全攻击 的方法依然还有很多。

  这里警示你:在 Web 开发过程中要时刻注意安全问题。一些安全问题远比想象的要复杂 得多。我们有时会低估程序的弱点,直到被一个聪明人利用这个弱点来攻击我们的程序。 不要以为你的应用不重要,还不足以别人来攻击。没准是自动化机器人用垃圾邮件或恶意 软件链接等东西来填满你宝贵的数据库。”

##############################################################################

安装:

 1)虚拟环境:建议在开发环境和生产环境下都使用虚拟环境来管理项目的依赖。

  why:随着你的 Python 项目越来越多,你会发现不同的项目会需要 不同的版本的 Python 库。同一个 Python 库的不同版本可能不兼容。

  So:虚拟环境可以为每一个项目安装独立的 Python 库,这样就可以隔离不同项目之间的 Python 库,也可以隔离项目与操作系统之间的 Python 库。

Python 3 内置了用于创建虚拟环境的 venv 模块。

   How:1)创建虚拟环境:在myproject项目文件夹下终端执行“python3 -m venv venv” ,会创建处一个venv 文件夹

      2)激活虚拟环境,运行:“. venv/bin/activate”

      3)安装Flask:“pip install Flask”

      4)如果想要在正式发行之前使用最新的 Flask 开发版本,可以使用如下命令从主分支 安装或者更新代码: “pip install -U https://github.com/pallets/flask/archive/master.tar.gz”

   注意:python2要安装virualenv才能用venv。 

 ##############################################################################

快速上手:

   一、用python文件写一个最小的flask应用:

  

  1. 首先导入了 Flask 类。 该类的实例将会成为我们的 WSGI 应用。
  2. 接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。如果你使用 一个单一模块(就像本例),那么应当使用 __name__ ,因为名称会根据这个 模块是按应用方式使用还是作为一个模块导入而发生变化(可能是 ‘__main__’ , 也可能是实际导入的名称)。这个参数是必需的,这样 Flask 才能知道在哪里可以 找到模板和静态文件等东西。更多内容详见 Flask 文档。
  3. 然后我们使用 route() 装饰器来告诉 Flask 触发函数的 URL 。
  4. 函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。

   二、运行

     1.在运行应用之前,需要激活虚拟环境,运行:“. venv/bin/activate”

     2.在终端里导出 FLASK_APP 环境变量:"  export FLASK_APP=hello.py

                运行服务器:  flask run #还可以使用 python -m flask run "

    这样就启动了一个非常简单的内建的服务器。这个服务器用于测试应该是足够了,但是,用于生产可能是不够的。

 

    

    三、调试模式:绝对不能在生产环境下使用
   服务器会在修改应用代码之后自动重启,并且当应用出错时还会提供一个有用的调试器。

   如果需要打开所有开发功能(包括调试模式),那么要在运行服务器之前导出 FLASK_ENV 环境变量并把其设置为 development:

$ export FLASK_ENV=development
$ flask run

实现以下功能:

  1. 激活调试器。
  2. 激活自动重载。
  3. 打开 Flask 应用的调试模式。

还可以通过导出 FLASK_DEBUG=1 来单独控制调试模式的开关

猜你喜欢

转载自www.cnblogs.com/marvintang1001/p/10919526.html