30分钟玩转Python后端Flask 您所在的位置:网站首页 flask是前端还是后端框架 30分钟玩转Python后端Flask

30分钟玩转Python后端Flask

2024-06-17 07:32| 来源: 网络整理| 查看: 265

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/') def hello_name(name): return 'Hello %s!' % name #定义传的变量的类型 @app.route('/blog/') def show_blog(postID): return 'Blog Number %d' % postID @app.route('/rev/') 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/') def hello_guest(guest): return 'Hello %s as Guest' % guest #重定向 @app.route('/user/') 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 Enter Name: from flask import Flask, redirect, url_for, request app = Flask(__name__) @app.route('/success/') def success(name): return 'welcome %s' % name @app.route('/login',methods = ['POST', 'GET']) def login(): if requesthod == '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 ''Hello World'' if __name__ == '__main__': app.run(debug = True)

但是,从Python代码生成HTML内容很麻烦,尤其是在需要放置变量数据和Python语言元素(如条件或循环)时。这需要经常从HTML中转义。

这是可以利用Flask所基于的Jinja2模板引擎的地方。而不是从函数返回硬编码HTML,可以通过render_template()函数呈现HTML文件。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有