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相关推荐

  1. Python入门教程,30分钟玩转Python编程!

    这是本文的目录 前言 Python环境下载和配置 常用IDE--PyCharm 常用IDE--Anaconda Python操作入门 Python基本操作 Python注释 Python的行与缩进 多 ...

  2. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ 转载于:https://www.cnblogs.com/pegasu ...

  3. python程序-30分钟学会用Python编写简单程序

    原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...

  4. python写软件实例-30分钟学会用Python编写简单程序

    原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...

  5. 服务器可视化_疫情来袭,30分钟学会用python开发部署疫情可视化网站

    2019-nCov疫情实时数据可视化--30分钟python快速版 疫情来袭,宅在家不如学习用python如何开发并部署一个疫情实时追踪可视化页面.页面预览 本文将介绍如何使用python开发网站,「 ...

  6. 【玩转python】Flask基金数据可视化

    前言 本文介绍的是蛋卷基金最近七天的数据用Flask框架展示并绘出七天内的基金涨幅趋势.本文仅使用于个人学习参考!!! 前提准备 解析器python 3.7.0  编辑工具pycharm: pytho ...

  7. python编写程序-30分钟学会用Python编写简单程序

    参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方式修改它们. 了解构成有效Python标识符和表 ...

  8. python股权变动监控系统_每天5分钟玩转Python(12) - 生成器(下)

    这一章开始介绍生成器函数和 yield关键字,以及Python中的协程的概念. yield关键字 当我们调用一个普通的函数时,执行过程从第一条语句开始,直到碰到一个 return语句或者遇到一个异常抛 ...

  9. 30分钟玩转C语言指针

    说到指针,估计还是有很多小伙伴都还是云里雾里的,有点"知其然,而不知其所以然".但是,不得不说,学了指针,C语言才能算是入门了.指针是C语言的「精华」,可以说,对对指针的掌握程度, ...

最新文章

  1. 1995年,比尔·盖茨解释什么是互联网
  2. linux文件历史,Linux文件系统的历史透视
  3. 初始化java工具失败,spring初始化失败解决办法
  4. 错误 Failed to load module “canberra-gtk-module“ 解决方案
  5. 初识ajaxpro以及使用
  6. greenplum配置高可用_Greenplum 的高可用是怎么做到的?
  7. uni-app 实现点击列表隐藏显示
  8. Tyvj 1921 Freda的烦恼
  9. linux源码文件名,Linux中文件名解析处理源码分析
  10. Noip2011提高组 聪明的质监员
  11. C# WPF DataGrid在Grid中自适应窗体大小
  12. Hadoop HDFS原理
  13. 【wp_code】快递简写列表,erp接口 ,淘宝erp接口,拼多多erp接口,京东erp接口,抖音erp接口,发货接口,打单接口
  14. 【北京线下】FMI2018人工智能大数据技术沙龙第869期
  15. ZenTaoPMS.11.6.5.zbox_64.tar
  16. vivox50支持鸿蒙,vivo X50厚度刷新纪录:迄今为止最薄5G手机
  17. 爬虫小白入门实例 —— 爬取全国某天所有火车的运行时刻表
  18. 虚拟服务器的磁盘合并,磁盘管理怎么合并分区
  19. XJTU第八周大计基编程作业
  20. 我们对Google的排名算法到底了解多少?

热门文章

  1. SAP常用系统字段含义
  2. NVIDIA GPU驱动安装
  3. 使用指针打印数组的内容
  4. 10G数据,1G内存,如何排序?
  5. postman测试post请求参数为json类型
  6. gif动图快速制作方法(附工具)(转)
  7. VUE 脚手架框架 编写一个简洁的登录界面
  8. navicat还需要下载mysql_navicat for mysql的下载、安装与基本使用
  9. 如何加减单元格指定数字_Excel非常实用的单元格数量统计函数-COUNT系列函数
  10. java页面左右浮动窗,使用JavaScript实现上下浮动的窗口