30分钟玩转Python后端Flask
30分钟玩转Python后端
什么是Flask?
Flask是一个用Python编写的Web应用程序框架。 它由 Armin Ronacher
开发,他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。
WSGI
Web Server Gateway Interface(Web服务器网关接口,WSGI)已被用作Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。
Werkzeug
它是一个WSGI工具包,它实现了请求,响应对象和实用函数。 这使得能够在其上构建web框架。 Flask框架使用Werkzeug作为其基础之一。
jinja2
jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。
Flask通常被称为微框架。 它旨在保持应用程序的核心简单且可扩展。Flask没有用于数据库处理的内置抽象层,也没有形成验证支持。相反,Flask支持扩展以向应用程序添加此类功能。一些受欢迎的Flask扩展将在本教程后续章节进行讨论。
Flask 应用
如果没有安装Flask,请先百度怎么安装!!!
为了测试 Flask 安装,请在编辑器中将以下代码输入 Hello.py:
from flask import Flask
app = Flask(__name__)#设置导航路径 '/'是默认不接后缀,直接访问
#route(rule, options)函数是一个装饰器
#它告诉应用程序哪个URL应该调用相关的函数
#rule 参数表示与该函数的URL绑定。
#options 是要转发给基础Rule对象的参数列表。
@app.route('/')
def hello_world():return 'Hello World’if __name__ == '__main__':
#run()方法在本地开发服务器上运行应用程序
#app.run(host, port, debug, options)app.run()#开启调试模式#app.run(debug = True)
Flask 路由
@app.route(‘/hello’)
def hello_world():return ‘hello world’
在这里,URL ‘/ hello’ 规则绑定到hello_world()函数。 因此,如果用户访问http:// localhost:5000 / hello URL,hello_world()函数的输出将在浏览器中呈现。
application对象的add_url_rule()函数也可用于将URL与函数绑定,如上例所示,使用route()。
装饰器的目的也由以下表示:
def hello_world():return ‘hello world’
app.add_url_rule(‘/’, ‘hello’, hello_world)
Flask 变量规则
通过向规则参数添加变量部分,可以动态构建URL。此变量部分标记为。它作为关键字参数传递给与规则相关联的函数。
from flask import Flask
app = Flask(__name__)#通过URL传参
@app.route('/hello/<name>')
def hello_name(name):return 'Hello %s!' % name
#定义传的变量的类型
@app.route('/blog/<int:postID>')
def show_blog(postID):return 'Blog Number %d' % postID@app.route('/rev/<float:revNo>')
def revision(revNo):return 'Revision Number %f' % revNo
if __name__ == '__main__':app.run(debug = True)
Flask URL构建
url_for()函数对于动态构建特定函数的URL非常有用。该函数接受函数的名称作为第一个参数,以及一个或多个关键字参数,每个参数对应于URL的变量部分。
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/admin')
def hello_admin():return 'Hello Admin'@app.route('/guest/<guest>')def hello_guest(guest):return 'Hello %s as Guest' % guest#重定向
@app.route('/user/<name>')
def hello_user(name):if name =='admin':return redirect(url_for('hello_admin'))else:return redirect(url_for('hello_guest',guest = name))保存上面的代码并从Python shell运行。if __name__ == '__main__':app.run(debug = True)
上述脚本有一个函数user(name),它接受来自URL的参数的值。
User()函数检查接收的参数是否与’admin’匹配。如果匹配,则使用url_for()将应用程序重定向到hello_admin()函数,否则重定向到将接收的参数作为guest参数传递给它的hello_guest()函数。
Flask HTTP方法
Http协议是万维网中数据通信的基础。在该协议中定义了从指定URL检索数据的不同方法。
默认情况下,Flask路由响应GET请求。但是,可以通过为route()装饰器提供方法参数来更改此首选项。
为了演示在URL路由中使用POST方法,首先让我们创建一个HTML表单,并使用POST方法将表单数据发送到URL。
这种场景常见于登录注册
- 先准备一个表单页面login.html
<html><body><form action = "http://localhost:5000/login" method = "post"><p>Enter Name:</p><p><input type = "text" name = "nm" /></p><p><input type = "submit" value = "submit" /></p></form></body>
</html>
from flask import Flask, redirect, url_for, request
app = Flask(__name__)@app.route('/success/<name>')
def success(name):return 'welcome %s' % name@app.route('/login',methods = ['POST', 'GET'])
def login():if request.method == 'POST':user = request.form['nm']return redirect(url_for('success',name = user))else:user = request.args.get('nm')return redirect(url_for('success',name = user))if __name__ == '__main__':app.run(debug = True)
开发服务器开始运行后,在浏览器中打开login.html,在文本字段中输入name,然后单击提交。
表单数据将POST到表单标签的action子句中的URL。
http://localhost/login映射到login()函数。由于服务器通过POST方法接收数据,因此通过以下步骤获得从表单数据获得的“nm”参数的值:
user = request.form[‘nm’]
它作为变量部分传递给’/ success’ URL。浏览器在窗口中显示welcome消息。
在login.html中将方法参数更改为’GET’,然后在浏览器中再次打开它。服务器上接收的数据是通过GET方法获得的。通过以下的步骤获得’nm’参数的值:
User = request.args.get(‘nm’)
这里,args是包含表单参数对及其对应值对的列表的字典对象。与’nm’参数对应的值将像之前一样传递到’/ success’ URL。
Flask 模板
可以以HTML的形式返回绑定到某个URL的函数的输出。
from flask import Flask
app = Flask(__name__)@app.route('/')
def index():return '<html><body><h1>'Hello World'</h1></body></html>'if __name__ == '__main__':app.run(debug = True)
但是,从Python代码生成HTML内容很麻烦,尤其是在需要放置变量数据和Python语言元素(如条件或循环)时。这需要经常从HTML中转义。
这是可以利用Flask所基于的Jinja2模板引擎的地方。而不是从函数返回硬编码HTML,可以通过render_template()函数呈现HTML文件。
30分钟玩转Python后端Flask相关推荐
- Python入门教程,30分钟玩转Python编程!
这是本文的目录 前言 Python环境下载和配置 常用IDE--PyCharm 常用IDE--Anaconda Python操作入门 Python基本操作 Python注释 Python的行与缩进 多 ...
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ 转载于:https://www.cnblogs.com/pegasu ...
- python程序-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- python写软件实例-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- 服务器可视化_疫情来袭,30分钟学会用python开发部署疫情可视化网站
2019-nCov疫情实时数据可视化--30分钟python快速版 疫情来袭,宅在家不如学习用python如何开发并部署一个疫情实时追踪可视化页面.页面预览 本文将介绍如何使用python开发网站,「 ...
- 【玩转python】Flask基金数据可视化
前言 本文介绍的是蛋卷基金最近七天的数据用Flask框架展示并绘出七天内的基金涨幅趋势.本文仅使用于个人学习参考!!! 前提准备 解析器python 3.7.0 编辑工具pycharm: pytho ...
- python编写程序-30分钟学会用Python编写简单程序
参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方式修改它们. 了解构成有效Python标识符和表 ...
- python股权变动监控系统_每天5分钟玩转Python(12) - 生成器(下)
这一章开始介绍生成器函数和 yield关键字,以及Python中的协程的概念. yield关键字 当我们调用一个普通的函数时,执行过程从第一条语句开始,直到碰到一个 return语句或者遇到一个异常抛 ...
- 30分钟玩转C语言指针
说到指针,估计还是有很多小伙伴都还是云里雾里的,有点"知其然,而不知其所以然".但是,不得不说,学了指针,C语言才能算是入门了.指针是C语言的「精华」,可以说,对对指针的掌握程度, ...
最新文章
- 1995年,比尔·盖茨解释什么是互联网
- linux文件历史,Linux文件系统的历史透视
- 初始化java工具失败,spring初始化失败解决办法
- 错误 Failed to load module “canberra-gtk-module“ 解决方案
- 初识ajaxpro以及使用
- greenplum配置高可用_Greenplum 的高可用是怎么做到的?
- uni-app 实现点击列表隐藏显示
- Tyvj 1921 Freda的烦恼
- linux源码文件名,Linux中文件名解析处理源码分析
- Noip2011提高组 聪明的质监员
- C# WPF DataGrid在Grid中自适应窗体大小
- Hadoop HDFS原理
- 【wp_code】快递简写列表,erp接口 ,淘宝erp接口,拼多多erp接口,京东erp接口,抖音erp接口,发货接口,打单接口
- 【北京线下】FMI2018人工智能大数据技术沙龙第869期
- ZenTaoPMS.11.6.5.zbox_64.tar
- vivox50支持鸿蒙,vivo X50厚度刷新纪录:迄今为止最薄5G手机
- 爬虫小白入门实例 —— 爬取全国某天所有火车的运行时刻表
- 虚拟服务器的磁盘合并,磁盘管理怎么合并分区
- XJTU第八周大计基编程作业
- 我们对Google的排名算法到底了解多少?