zoukankan      html  css  js  c++  java
  • flask源码分析01:框架简介

    flask源码分析01:框架简介

    flask简介

    Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI(Python Web Server Gateway Interface)工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
    Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具
    
    
    python 语言 web 框架很多:Django、Tornado、webpy、bottle……,flask 的特点是简单可扩展。简单有几个方面,比如它只实现 web 框架最核心的功能,保持功能的简洁;还有一个就是代码量少,核心代码 app.py 文件只有 2k+ 行。可扩展就是允许第三方插件来扩充功能,比如数据库可以使用 Flask-SQLAlchemy,缓存可以使用 Flask-Cache 等等。
    

    flask之hello world

    from flask import Flask
    app = Flask(__name__)
     
    @app.route('/')
    def hello_world():
    	return 'Hello, World!'
     
    if __name__ == '__main__':
    	app.run()
    

    依赖之werkzeug

    werkzeug 的定位并不是一个 web 框架,而是 HTTP 和 WSGI 相关的工具集,可以用来编写 web 框架,也可以直接使用它提供的一些帮助函数。
    
    Werkzeug is an HTTP and WSGI utility library for Python.
    
    werkzeug 提供了 python web WSGI 开发相关的功能:
    
    路由处理:怎么根据请求中的 url 找到它的处理函数
    request 和 response 封装:可以更好地读取 request 的数据,也容易生成响应
    一个自带的 WSGI server,可以用来测试环境运行自己的应用
    

    werkzeug 编写一个简单的 hello world 的 WSGI app

    from werkzeug.wrappers import Request, Response
    
    def application(environ, start_response):
    	request = Request(environ)
    	text = 'Hello %s!' % request.args.get('name', 'World')
    	response = Response(text, mimetype='text/plain')
    	return response(environ, start_response)
    

    依赖之jinjia2

    官网上,对 Jinja 的 介绍已经很清晰,它就是一个 python 实现的模板引擎,功能非常丰富。
    
    Jinja2 is a full featured template engine for Python. It has full unicode support, an optional integrated sandboxed execution environment, widely used and BSD licensed.
    
    Jinja 功能比较丰富,支持 unicode 解析、自动 HTML escape 防止 XSS 攻击、继承、变量、过滤器、流程逻辑支持、python 代码逻辑集成等等。
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    由@Convert注解引出的jackson对枚举的反序列化规则
    List.contains()与自动拆箱
    Utf-8+Bom编码导致的读取数据部分异常问题
    ResouceUtils.getFile()取不到Jar中资源文件源码小结
    Java自动装箱中的缓存原理
    Javaconfig形式配置Dubbo多注册中心
    logback多环境配置
    Spring @Scheduled @Async联合实现调度任务(2017.11.28更新)
    Nginx的Access日志记录的时机
    Mysql索引引起的死锁
  • 原文地址:https://www.cnblogs.com/daviddd/p/11917804.html
Copyright © 2011-2022 走看看