zoukankan      html  css  js  c++  java
  • flask框架预备知识

    1.web预备知识

    2.flask介绍

    3.web框架的本质及分类

    4.flask安装与基本设置

    1.web预备知识

    HTTP协议:https://www.cnblogs.com/wyb666/p/9383077.html

    关于web的本质:http://www.cnblogs.com/wyb666/p/9034042.html

    如何自定义web框架:http://www.cnblogs.com/wyb666/p/9038644.html

    了解cookie和session:https://www.cnblogs.com/wyb666/p/9068853.html

    2.flask介绍

    (1)flask介绍

    Python的WEB框架有Django、Tornado、Flask 等多种

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

    “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。

    默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。

    1 from werkzeug.wrappers import Request, Response
    2 
    3 @Request.application
    4 def hello(request):
    5     return Response('Hello World!')
    6 
    7 if __name__ == '__main__':
    8     from werkzeug.serving import run_simple
    9     run_simple('localhost', 4000, hello)
    werkzeug实例

    (2)MVC

    MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中:

    • M——管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)
    • C——接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带
    • V——负责把数据格式化后呈现给用户

    (3)flask的优点

    • 极大的定制与扩展灵活
    • ORM、模板等海量第三方扩展
    • Flask比Django更加Pythonic,与Python的philosophy更加吻合

    (4)flask的组件

    flask是短小精悍的一个web框架,内部没有太多组件。第三方组件非常丰富:

    • flask-sqlalchemy -> ORM
    • flask-script -> 为在Flask里编写额外的脚本提供了支持
    • flask-migrate -> 为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作
    • flask-bootstrap -> 是包含了Bootstrap框架的扩展,安装Flask-Bootstrap之后,就可以在程序中集成Bootstrap
    • flask-moment -> 本地化时间和日期
    • flask-wtf -> 简化表单处理、防跨站请求伪造(CSRF)攻击
    • 、、、

    注:更多第三方组件见:http://flask.pocoo.org/extensions/

    3.web框架的本质及分类

    (1)web框架的本质:socket服务端 与 浏览器的通信

    (2)socket服务端功能划分

    • 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn...
    • 根据用户访问不同的路径执行不同的函数
    • 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)


    (3)Python中 Web框架的分类

    按上面三个功能划分:

    • 框架自带a,b,c --> Tornado
    • 框架自带b和c,使用第三方的a --> Django
    • 框架自带b,使用第三方的a和c --> Flask

    按另一个维度来划分:

    • Django --> 大而全(你做一个网站能用到的它都有)
    • 其他 --> Flask 轻量级

    4.flask安装与基本设置

    (1)flask安装

    1 pip3 install flask

    注意:

    1 在linux服务器上可能没有自带pip3
    2 所以要自己去安装pip3,安装方法如下:
    3 apt-get install python3-pip

    (2)创建flask项目

    使用pycharm(专业版)创建:File --> New project --> 左侧选flask--> 右侧填项目路径,并且勾选python.exe

    自己创建: 创建一个普通项目 -> 在这个项目里自己搭flask的框架

    关于flask的框架,可以根据项目需求和自己掌握的东西来选择组件,但是最基本的就是以下的东西:

    (3)设置flask项目

    flask项目的设置有很多方法,可以设置在单独的文件中,也可以直接写在字典中然后传给app.run方法

    以后者为例,以下是最基本的设置:

     1 # 运行服务器
     2 if __name__ == '__main__':
     3     # debug 模式可以自动加载你对代码的变动, 所以不用重启程序
     4     # host 参数指定为 '0.0.0.0'   可以让别的机器访问你的代码
     5     # host 参数指定为 'localhost' 实际上是使用本机回环地址127.0.0.1
     6     # 127.0.0.1 一般是用来进行本地测试和开发的
     7     # port指定端口 端口是这个网站被别人访问的入口 
     8     # 有了IP+端口 别人才能真正访问一个网站
     9     config = dict(
    10         debug=True,
    11         host='localhost',
    12         port=2000,
    13     )
    14     app.run(**config)
    15     # app.run() 开始运行服务器
    16     # 访问下面的网址就可以打开网站:
    17     # http://127.0.0.1:2000/
  • 相关阅读:
    wget(转)
    852. Peak Index in a Mountain Array
    617. Merge Two Binary Trees
    814. Binary Tree Pruning
    657. Judge Route Circle
    861. Score After Flipping Matrix
    832. Flipping an Image
    461. Hamming Distance
    654. Maximum Binary Tree
    804. Unique Morse Code Words
  • 原文地址:https://www.cnblogs.com/wyb666/p/9460598.html
Copyright © 2011-2022 走看看