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解释器的一个私有副本,在这个环境中可以安装私有包 ...
随机推荐
- <if test="type == '0' ">没有进去这个判断的问题
在MyBatis的mapp文件中的if判断中是这样写的 <if test="type == '0' "> and so1.id = #{unitcode} </i ...
- Python入门4 —— 输入与输出
一:输入(Input) 1.python3中的input(输入) inp_username=input("请输入您的密码:") # "18" print(inp ...
- 3_time
3. Time and order What is order and why is it important? What do you mean "what is order"? ...
- Django 初试水(一)
2020年注定是一个不平凡的一年!坚持就是胜利,一起加油! 至于为什么使用 Django,也不想说太多.个人喜欢,这里不做介绍.直接进入主题.show me the code!!! python 的环 ...
- 第一篇 网站基础知识 第3章 DNS的设置
第3章 DNS的设置 3.1 DNS解析 3.2 Windows 7设置DNS服务器 3.3Windows设置本机域名和IP的对应关系 在自己的电脑里也可以设置域名和IP的对应关系,具体设置是在C:\ ...
- Apache NIFI
Add a.password file to chrome. Settings -> Advanced -> Security -> Manage Certificates -> ...
- 注解 - @Deprecated
意思是说此方法已过时,过时的原因就是有新的API的类替代了次方法. 这个被划去的方法仍然是可以正常使用的,就是一个提示而已. Java内在的File类中有如下方法 @Deprecated public ...
- MS yc
# word - operate标题栏 菜单栏 工具栏 页面 状态栏 字体阴影 背景色 着重号 项目符号 数字编码 格式刷
- 安全相关的Linux知识
本文用于记录在安全中的Linux常用命令,基础命令可以移步去菜鸟教程(https://www.runoob.com/linux/linux-tutorial.html)学习 Linux重要的4个热键 ...
- ubuntu安装搜狗输入
百度搜索搜狗输入ubuntu找到官网地址 下载deb包 sogoupinyin_2.3.1.0112_amd64.deb 上传 dkpkg -i sogoupinyin_2.3.1.0112_a ...