Flask 学习之flask入门
一.Flask的简单介绍
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
“微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。
默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。
官网: https://palletsprojects.com/p/flask/
官方文档: http://docs.jinkan.org/docs/flask/
二.Flask的相关依赖
1.依赖
当安装 Flask 时,以下配套软件会被自动安装。
• Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口。
• Jinja 用于渲染页面的模板语言。
• MarkupSafe 与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击。
• ItsDangerous 保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie.
• Click 是一个命令行应用的框架。用于提供 flask 命令,并允许添加自定义管理命令。
2.可选依赖
以下配套软件不会被自动安装。如果安装了,那么 Flask 会检测到这些软件。
• Blinker 为信号 提供支持。
• SimpleJSON 是一个快速的 JSON 实现,兼容 Python’s json 模块。如果安装了这个软件,那么会优先
使用这个软件来进行 JSON 操作。
• python-dotenv 当运行 flask 命令时为通过 dotenv 设置环境变量 提供支持。
• Watchdog 为开发服务器提供快速高效的重载。
3.Flask常用扩展包
Flask-SQLalchemy:操作数据库,ORM;
Flask-script:终端脚本工具,脚手架; 终端自动生成代码工具的称为脚手架
Flask-migrate:管理迁移数据库;
Flask-Session:Session存储方式指定;
Flask-WTF:表单;
Flask-Mail:邮件;
Flask-Bable:提供国际化和本地化支持,翻译;
Flask-Login:认证用户状态;
Flask-OpenID:认证, OAuth;
Flask-RESTful:开发REST API的工具;
Flask JSON-RPC: 开发rpc远程服务[过程]调用
Flask-Bootstrap:集成前端Twitter Bootstrap框架
Flask-Moment:本地化日期和时间
Flask-Admin:简单而可扩展的管理接口的框架
可以通过 http://flask.pocoo.org/extensions/ 查看更多flask官方推荐的扩展
三.flask安装
在虚拟环境下使用下面命令安装flask:
pip install flask
与时俱进[最新版的flask代码]
如果想要在正式发行之前使用最新的Flask开发版本,可以使用如下命令从主分支安装或者更新代码:
$pip install -U https://github.com/pallets/flask/archive/master.tar.gz
四.最简单的flask应用
创建一个hello_world.py的文件:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "hello world!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
# 运行 python hello_world.py
# 使用以下url访问 可以得到打印结果
# http://127.0.0.1:5000/
代码分析:
# 导入Flask类
from flask import Flask """
import_name Flask程序所在的包(模块),传 __name__ 就可以
其可以决定 Flask 在访问静态文件时查找的路径
static_path 静态文件访问路径(不推荐使用,使用 static_url_path 代替)
static_url_path 静态文件访问路径,可以不传,默认为:/ + static_folder
static_folder 静态文件存储的文件夹,可以不传,默认为 static
template_folder 模板文件存储的文件夹,可以不传,默认为 templates
"""
app = Flask(__name__) # 加载项目配置
# 配置类
class Config(object):
DEBUG = True app.config.from_object( Config ) # 指定服务器IP和端口
app.run(host="0.0.0.0", port=5000)
访问的结果:

最简单应用的解释:
1.首先我们导入了Flask类。该类的实例将会成为我们的WSGI应用。
2.接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。如果你使用一个单一模块(就像本例),那么应当使用__name__,因为名称会根据这个模块是按应用方式使用还是作为一个模块导入而发生变化(可能是‘__main__’,也可能是实际导入的名称)。这个参数是必需的,这样Flask才能知道在哪里可以找到模板和静态文件等东西。
3.然后我们使用route()装饰器来告诉Flask触发函数的URL。
4.函数名称被用于生成相关联的URL。函数最后返回需要在用户浏览器中显示的信息。
再写一个简单的练习Index Page:
代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "hsz" from flask import Flask app = Flask(__name__) @app.route("/index")
def index():
return "Index Page!" if __name__ == "__main__":
app.run(host='127.0.0.1', port=5000)
#运行后使用下面url访问
# http://127.0.0.1:5000/index

Flask 学习之flask入门的更多相关文章
- Flask 学习目录
Flask 学习目录 Flask 的学习过程是一个了解如何从单个模块搭建一个 Web 框架的过程. Python.Flask 的安装和设置 简单的 Hello World 程序 使用 Jinjia2 ...
- Flask学习目录
目录 Flask学习初识 Flask学习二
- flask学习1
总结 Flask Web 框架 轻量 websocket 全双工通讯 socket TCP 通讯 MongoDB 数据库 文件型数据库 {} 没有限制 和 约束 Mui + HTML5 Plus 调用 ...
- Python 什么是flask框架?快速入门
一:Python flask框架 前言 1.Python 面向对象的高级编程语言,以其语法简单.免费开源.免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Python运用到大数据分析. ...
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...
- [Flask]学习杂记--模板
这个学习杂记主要不是分享经验,更多是记录下falsk的体验过程,以后做东西在深入研究,因为django之前用的时间比较长,所以很多概念都是一看而过,做个试验了解下flask的功能. flask中使用是 ...
- 二.Flask 学习模板
Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于模板渲染? 简单来说,就是将 ...
- Python Flask学习笔记之模板
Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...
- Python Flask学习笔记之Hello World
Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...
随机推荐
- Docker最全教程——从理论到实战(十一)
前言 容器教程的路还很长,笔者尽量根据实践来不断地完善.由于在编写的过程中还会有完善和补充,后续可能会以番外来补充. 接下来会分享TeamCity.树莓派等内容,节奏可能会有点跳脱. 另外,长沙.NE ...
- Fragment应用
使用母页和子页配合展示内容:母页和子页都有自己的activity. 母页是含有frameLayout控件的页面.子页通过配置,在frameLayout控件中显示:frameLayout本身没有任何内容 ...
- 利用Marshal来管理非托管资源
void MarshalChartDemo() { string name = "xuwei"; IntPtr pName = Marshal.AllocHGlobal(name. ...
- 关于wget安装mysql的过程
鄙人才疏学浅,写此文章是为了帮助我那些刚入门的朋友一点心意 第一步 安装yum源 安装mysql的yum源:wget https://dev.mysql.com/get/mysql80-commun ...
- JavaScript的Map和Set
JavaScript的Map和Set 1.map:映射(通过key获得value).增.删 2.set:增.删.判断是否包含某个元素 1. Map <!DOCTYPE html><h ...
- 用Object.prototype.toString.call(obj)检测对象类型原因分析
用Object.prototype.toString.call(obj)检测对象类型原因分析 更新时间:2018年10月11日 08:46:33 投稿:laozhang 我要评论 在本 ...
- VS2017连接MySQL数据库
vs默认无法直接连接mysql,需要我们自己配置环境. 1.下载mysql-installer-community-8.0.18.0.msi 下载地址:https://dev.mysql.com/do ...
- C++-随机数的产生
一.随机数 以前学C语言的时候感觉随机数没啥用的,现在想想是自己无知啦,在帮人做一个项目的时候发现随机数还是相当有用的,我们可以利用随机数来生成大量的测试数据. 有两种方法可以让你的程序每次运行结果不 ...
- SpringMVC 配置.html拦截时,返回JSON数据时出现406错误解决方案
[说明]在SpringMVC框架的使用中常常会使用@ResponseBody注解,修饰"处理器"(Controller的方法),这样在处理器在返回完毕后,就不走逻辑视图,而是将返回 ...
- 1、spring与springmvc父子容器
转载于http://www.tianshouzhi.com/api/tutorials/spring 1.0 spring与springmvc父子容器 1.spring和springmvc父子容器概念 ...