zoukankan      html  css  js  c++  java
  • Flask介绍

    框架做了些什么

    服务端按照职责仔细划分,可以分为服务器+框架,服务器server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端。框架处理的工作是接收由server转发的request,处理请求,并将处理结果返回给server。其中server和框架之间定义了一种通信规范,叫wsgi协议。
    所以,框架一般只做路由分发和视图处理,但是也有例外,比如tornado就自己实现了服务器的功能。
    做一下总结,在web开发中程序员写代码相当于站在flask框架这个人的肩膀上,而flask这个框架程序的实现又是基于实现了wsgi的socket服务端程序的,比如werkzurg.

    werkzurg

    from werkzeug.serving import run_simple
    from werkzeug.wrappers import Request, Response
    
    @Request.application
    def run(request):
        return Response('hhh')
    
    if __name__ == '__main__':
        run_simple('', 5000, run)
    

    框架对比

    框架都有的一个功能就是路由分发。这也是框架最基础的功能。从框架的轻质来分:
    重量级框架: 如Django,除了实现路由,还实现自己的template,为了操作数据库方便还有自己的orm,功能全。但是不易自定制,例如想要更换内置的orm,因为框架内部依赖比较紧密,所以牵一发而动全身。
    轻量级框架:如Flask,核心就是基于weekzurg的路由,模版用的是第三方的jinja2,没有自己的orm,可以借助第三方,如sqlalchemy。要用什么完全由开发者决定。

    基本使用

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def idnex():
        return 'index'
    
    if __name__ == '__main__':
        app.run()
    

    对于这个最基本的程序,有几点需要说明:

    1. 导入包的时候最好不要使用from flask import *,PEP8不建议这么做,最直观的感受是看代码的人不知道程序的模块到底来自哪个包
    2. 用FLask类实例化的时候传入了__name____name__的含义是模块名,Flask类有默认的static参数,当我们在浏览器输入http:127.0.0.1:5000/static/index.html', flask框架怎么知道去哪个目录下找index.html这个文件呢?答案就是这里的name, 根据name得到的模块名所在的目录,把这个目录当作根目录,flask会去这个根目录下寻找静态目录的静态文件。如果随便写了一个不存在的模块,如app=Flask('qwewq')`,那么flask会自作主张就把当前py文件所在目录当作根目录。
    3. app.run 这个方法是开启一个简单的服务器,在实际生产中这一步会被替换的
    4. 我们在浏览器输入http:127.0.0.1:5000/static/index.html',flask当拿到请求的url看到前缀是和static_url_path`设置的一样时,就会去静态目录去找文件而不走路由
    5. django项目的py文件放置位置大体是固定的,但是flask项目文件的组织形式由开发者来定

    linux安装虚拟环境

    虚拟环境使用virtualenv创建,可以查看系统是否安装了virtualenv:$ virtualenv --version
    安装虚拟环境:

    $ pip install virtualenv
    $ pip install virtualenvwrapper
    

    安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:

    # 1、创建目录用来存放虚拟环境
    mkdir $HOME/.virtualenvs
    
    # 2、打开~/.bashrc文件,并添加如下:
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
    
    # 3、运行
    source ~/.bashrc
    

    创建虚拟环境:mkvirtualenv flask_test
    进入虚拟环境:$ workon flask_test
    退出虚拟环境: 如果所在环境为真实环境,会提示deactivate:未找到命令 $ deactivate Flask_py

  • 相关阅读:
    mongodb 修改最大连接数
    js hook eval
    js hook ajax
    js hook cookie
    windows启动redis命令行
    springboot结合redis使用token实现登录注销功能
    springboot实现滑动验证码
    Java读取指定路径文件中的所有资源
    com.alibaba.fastjson.annotation.JSONField依赖
    springboot和session实现验证码功能
  • 原文地址:https://www.cnblogs.com/longyunfeigu/p/9430615.html
Copyright © 2011-2022 走看看