flask框架是什么?

Flask 是一个轻量级的 Web 框架,用于构建 Web 应用程序。它基于 Python 编程语言和 Werkzeug 工具包,提供了简单易用的 API,可以轻松地创建 RESTful API 和 Web 应用程序。

flask的特点

  • 轻量级:Flask 框架非常轻量级,代码库小巧,易于学习和使用。
  • 灵活:Flask 提供了许多插件和扩展,可以根据需要灵活地构建 Web 应用程序。
  • 易扩展:Flask 框架易于扩展,可以添加许多自定义功能。
  • 模板引擎:Flask 提供了 Jinja2 模板引擎,可以轻松地构建动态页面。
  • ORM:Flask 提供了 SQLAlchemy ORM,可以轻松地与数据库进行交互。
  • RESTful API:Flask 框架提供了 Flask-RESTful 扩展,可以轻松地构建 RESTful API。
  • 插件机制:Flask 提供了丰富的插件机制,可以根据需要添加自定义功能。

flask框架的优点

  • 简单易用:Flask 框架简单易用,学习成本低,适合快速构建 Web 应用程序。
  • 灵活性强:Flask 提供了许多扩展和插件,可以根据需要灵活地构建 Web 应用程序。
  • 易于扩展:Flask 框架易于扩展,可以添加许多自定义功能。
  • 模板引擎强大:Flask 提供了 Jinja2 模板引擎,可以轻松地构建动态页面。
  • ORM 强大:Flask 提供了 SQLAlchemy ORM,可以轻松地与数据库进行交互。
  • 支持 RESTful API:Flask 框架提供了 Flask-RESTful 扩展,可以轻松地构建 RESTful API。
  • 插件丰富:Flask 提供了丰富的插件机制,可以根据需要添加自定义功能。

总之,Flask 框架是一个轻量级、灵活、易扩展、模板引擎强大、ORM 强大、支持 RESTful API 和丰富的插件机制的 Web 框架,可以帮助开发者快速地构建高质量的 Web 应用程序。

flask框架的基本使用

flask框架可以轻松的构建最基础的服务器程序,只需要运行以下代码:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return "hello world"if __name__ == '__main__':app.run(debug=True)

该段代码首先导入了flask库中的 Flask类,该类的实例将会成为我们的 WSGI 应用,app就是实例化出来的应用,再使用装饰类使该web应用处理请求信息为"/"的请求。

运行结果:

打开给出的链接:

会发现在该url下页面返回hello world的字符串,说明最简单的flask框架的web应用以及搭建完成。

注意:127.0.0.1 以及0.0.0.0 是本地地址,5000是端口号

路由、变量、及url规则

路由

路由是指在 Web 应用程序中跳转到的页面或 URL。在 Flask 中,路由是使用 route() 函数定义的。

比如如下代码:

from flask import Flask
app = Flask(__name__)
# 路由@app.route('/')
def index():return "hello world!"@app.route('/hello/<name>')
def home(name):return "hello " + name@app.route('/blg/<int:postID>')
def postid(postID):return postIDif __name__ == '__main__':app.run()

如果访问5000端口的根目录:

如果访问hello/xiaoming:

变量

变量是在路由中使用的一种特殊的数据。它们可以在路由的参数中传递给视图函数。Flask 框架中有几种变量类型,包括:

  • request:用于处理客户端请求的对象。
  • session:用于存储会话数据的对象。
  • route:用于标识特定路由的变量。

要在 Flask 路由中使用变量,只需将它们放在变量字符串中,并在视图函数中引用它们。例如,要在 URL 中定义一个名为 /users/ 的变量,可以使用以下代码:

from flask import Flask, render_template  app = Flask(__name__)  @app.route('/users/<name>')
def users(name):  return render_template('users.html', users=[name])

上面的代码首先导入 Flask 库,创建一个应用程序实例,并在 app.route() 函数中定义了一个名为 /users/ 的变量。这个变量有一个名为 name 的变量。在 users.html 模板中,可以使用 {{ name }} 来引用这个变量。

URL 规则

URL 规则是指在 URL 中使用的一些特殊字符。它们可以用来指定请求的处理方式,例如:

  • /users:处理所有 URL 以 /users 开头的请求。
  • /users/:处理所有 URL 以 /users/ 开头的请求。
  • /users//:处理所有 URL 以 /users// 开头的请求。

要在 Flask 路由中使用 URL 规则,只需在路由的参数中使用相应的前缀和后缀。例如,要在 URL 中定义一个名为 /users// 的变量,可以使用以下代码:

from flask import Flask, render_template  app = Flask(__name__)  @app.route('/users/<name>/<sub-path>')
def users(name, sub_path):  return render_template('users.html', users=[name], sub_path=sub_path)

上面的代码首先导入 Flask 库,创建一个应用程序实例,并在 app.route() 函数中定义了一个名为 /users/ < name >/ < sub-path> 的变量。这个变量有一个名为 name 的变量和一个名为 sub_path 的变量。在 users.html 模板中,可以使用 {{ sub_path }} 来引用这个变量。注意,要使用不同的变量类型和路由参数来区分不同的请求。

flask的模板

from flask import Flask,render_templateapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html')if __name__ == '__main__':app.run(debug=True,threaded=True)

运行这段代码,服务器就会从该文件中平级的templates目录下寻找index.html文件,并且把它显示在页面中。

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><h1>Nihao</h1>
</body>
</html>

这是index.html

运行结果:

Flask.render_template 是 Flask 中用于渲染模板的核心函数。该函数接收一个模板字符串作为参数,并将其渲染为HTML。

以下是 Flask.render_template 的基本用法:

from flask import Flask, render_template  app = Flask(__name__)  @app.route('/')
def index():  return render_template('index.html', name='World')  @app.route('/hello')
def hello():  name = 'John'  return render_template('hello.html', name=name)

我们定义了两个路由函数 index 和 hello,它们都接收一个模板字符串作为参数。在 index 函数中,我们将 name 变量设置为 ‘World’,并将其作为参数传递给 render_template 函数来渲染模板。在 hello 函数中,我们将 name 变量设置为 ‘John’,并将其作为参数传递给 render_template 函数来渲染模板。

当我们运行 Flask 应用程序时,它将加载 index.html 和 hello.html 模板,并将它们渲染为相应的HTML。

在渲染模板时,Flask 会将变量插入到模板字符串中,并将其作为参数传递给 render_template 函数。在模板渲染时,Flask 会将这些变量作为参数插入到HTML中,并返回生成的HTML字符串。

静态文件、重定向和错误

在 Flask 中,静态文件、重定向和错误处理是非常重要的概念,它们在应用程序的正常运行中起着至关重要的作用。下面将详细讨论它们在 Flask 中的实现及应用场景。

  • 静态文件
    静态文件是存储在服务器上的文件,通常用于存储数据和资源。在 Flask 中,静态文件通常用于存储应用程序的配置信息、日志、样式表等。

要使用静态文件,需要在 Flask 应用程序中创建一个文件夹来存储静态文件。然后,在应用程序的主文件中,使用 url_for() 函数来引用静态文件。例如:

from flask import Flask, render_template  app = Flask(__name__)  @app.route('/')
def index():  return render_template('index.html', name='World')  if __name__ == '__main__':  # 创建静态文件夹  app.config['UPLOAD_FOLDER'] = 'static'  # 引用静态文件  static_folder = '../static'  app.url_for('static', filename=static_folder)

在这段代码中,我们在应用程序的主文件夹中创建了一个名为 static 的文件夹,然后在应用程序的 index 函数中使用 url_for() 函数来引用该静态文件。这样,在应用程序运行时,静态文件就会被自动加载并显示在浏览器中。

  • 重定向
    重定向是指将用户重定向到另一个位置的过程。在 Flask 中,重定向主要分为两种类型:①静态重定向(URL redir):将用户重定向到另一个静态文件夹;②动态重定向(URL redirect):将用户重定向到另一个页面。

对于静态重定向,只需在静态文件夹中创建相应的文件即可。而对于动态重定向,则需要使用 Flask 路由器来实现。以下是一个动态重定向的示例:

from flask import Flask, render_template, redirect, url_for, request, send_from_directory  app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static'  @app.route('/users', methods=['GET', 'POST'])
def users():  if request.method == 'POST':  # 获取新用户信息并进行处理  new_user = request.form['new_user']  # 进行重定向操作  url = url_for('user', username=new_user)  return redirect(url)  else:  # 显示列表页面  return render_template('users.html')

cookies及会话

在 Flask 框架中,cookies 和 session 是用来存储和管理用户数据的。

cookies 是一种常见的用户数据存储方式,通常用于在用户会话中存储一些简单的数据,如用户的偏好设置、登录状态等。Flask 默认使用 SessionCookieJar 来管理 cookies。

当用户在浏览器中访问一个 Flask 应用时,浏览器会将 cookies 存储在本地计算机上。当用户关闭浏览器并重新打开时,浏览器会将 cookies 重新加载到用户的计算机中,以便用户能够访问之前保存的数据。

要在 Flask 中使用 cookies,你需要在路由处理程序中添加 secret_key 参数,这个参数用于指定 cookie 的安全密钥。

from flask import Flask, render_template, request, redirect,sessionapp = Flask(__name__)
app.secret_key = 'my_secret_key'@app.route('/')
def index():return render_template('index.html')@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':# 获取用户输入的用户名和密码  username = request.form['username']password = request.form['password']# 在数据库中添加登录记录  if username == 'my_username' and password == 'my_password':session['username'] = usernamereturn redirect('/')else:return render_template('login.html', error='Invalid username or password')return render_template('index.html')if __name__ == '__main__':app.run()

我们在 /login 路由处理程序中使用了 secret_key 参数来指定 cookie 的安全密钥。这样,当用户重新访问应用时,浏览器会将 cookie 重新加载到用户的计算机中,以便用户能够访问之前保存的数据。

另外,Flask 还提供了会话(session)的概念,用于在用户会话中存储更复杂的数据,如用户的偏好设置、登录状态等。会话通常是通过在服务器端存储数据来实现的,而不是在客户端存储数据。

会话

在 Flask 中,会话是通过使用 Flask-Session 模块来实现的。要在 Flask 中使用会话,你需要在路由处理程序中添加 secret_key 参数,这个参数用于指定会话的安全密钥。

from flask import Flask, render_template, request, redirect, url_for
from flask_session import Session  app = Flask(__name__)
app.secret_key = 'my_secret_key'  @app.route('/')
def index():  return render_template('index.html')  @app.route('/login', methods=['GET', 'POST'])
def login():  if request.method == 'POST':  # 获取用户输入的用户名和密码  username = request.form['username']  password = request.form['password']  # 在数据库中添加登录记录  if username == 'my_username' and password

消息闪现

Flask 框架中的消息闪现(Flash)是一种用于在 Web 应用程序中显示简短提示信息的技术。当用户与应用程序交互时,如果有一些非常重要的信息需要立即告知用户,则可以使用 Flash。

要使用 Flask Flash,你需要在视图函数中使用 flash 参数来存储需要显示的提示信息。然后,在提示信息显示之前,使用 flash.get() 方法来检查是否已经显示了提示信息。如果提示信息已经存在,则将其替换为新的提示信息;否则,将提示信息添加到 Flash 对象中。

from flask import Flask, flash  app = Flask(__name__)  @app.route('/')
def index():  flash('This is a flash message!')  return 'Hello, World!'

这就是一段消息闪现的代码,当用户与应用程序交互时,flash 对象中存储的提示信息将被显示。在这种情况下,提示信息是“This is a flash message!”。在用户与应用程序交互后,flash 对象中的提示信息将被自动删除。

文件上传

在 Flask 中处理文件上传非常简单。它需要一个 HTML 表单,其 enctype 属性设置为“multipart/form-data”,将文件发布到 URL。

URL 处理程序从 request.files[] 对象中提取文件,并将其保存到所需的位置。每个上传的文件首先会保存在服务器上的临时位置,然后将其实际保存到它的最终位置。目标文件的名称可以是硬编码的,也可以从 request.files[file] 对象的 filename 属性中获取。

from flask import Flask, request, jsonify  app = Flask(__name__)  @app.route('/upload', methods=['POST'])
def upload_file():  # 检查是否有文件被上传  if 'file' not in request.files:  return jsonify({'error': 'No file uploaded.'}), 400  file = request.files['file']  # 安全保存文件到磁盘  file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))  return jsonify({'success': True}), 200

当用户上传文件时,request.files[‘file’] 对象将被创建并保存到指定的文件路径中。然后,文件将被安全地保存到服务器上的指定位置。最后,响应将包含一个成功的消息,其中包含一个键值“success”,表示上传成功。

【Python】flask框架学习 flask框架的基本使用相关推荐

  1. 从Theano到Lasagne:基于Python的深度学习的框架和库

    从Theano到Lasagne:基于Python的深度学习的框架和库 [日期:2015-08-03] 来源:http://creative-punch.net/  作者:Creative Punch ...

  2. 框架学习——WCF框架

    框架学习--WCF框架 什么是WCF .NET平台下,有很多分布式技术 WCF 快速搭建一个WCF程序 1.ABC概念 2.如何定义WCF项目 参考资料 什么是WCF .NET平台下,有很多分布式技术 ...

  3. 基于python的深度学习框架有_从Theano到Lasagne:基于Python的深度学习的框架和库...

    深度学习是机器学习和人工智能的一种形式,利用堆积在彼此顶部的神经网络的多个隐藏层来尝试形成对数据更深层次的"理解". 最近,深度神经网络以"Deep Dreams&quo ...

  4. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  5. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  6. 框架学习:框架是什么以及框架怎么学

    框架就是framwork,百度上说框架是整个或部分系统的可重用性设计,是应用开发者定制的应用骨架.我个人认为框架是一系列的底层服务,让应用开发者调用这一系列的底层服务来快速开发他们想要做的应用程序. ...

  7. SpringMVC框架 学习DAY_01:框架概括 / 简易应用 / 核心执行流程图 /在框架下显示HTML模板页面/ 接受请求

    1. SpringMVC框架的作用 MVC = Model(数据模型) + View(视图) + Controller(控制器) SpringMVC框架主要解决了接收请求与处理响应的问题,也可以认为是 ...

  8. NodeJS框架学习-Egg框架

    第一步:下载安装nodejs 下载官方网址:https://nodejs.org/en/download/ 本人是windows系统所以如图选择: 下载安装十分方便,环境变量也自动配置完成. 第二步: ...

  9. 谈谈Python的Flask框架学习与福利分享

    在秋天中暑 熬过了炎炎夏日,却在这个初秋的日子中暑了.本来休息不好,今天又跑了一天,结果回来坐车吹空调冷热交替的崩溃了... 脑壳疼 回家就躺倒睡了一觉,感觉舒服点了,起床开电脑却又不知道学点什么,想 ...

最新文章

  1. 用PHP计算个税,PHP计算个人所得税示例【不使用速算扣除数】
  2. 学习:springMVC注解
  3. php 正则表达式 取所有内容,php正则表达式获取内容所有链接
  4. kaggle房价预测问题
  5. 回答知乎问题:你写过什么自认为惊艳的诗?
  6. Python--第2次平时作业
  7. wordpress数据库表详解
  8. 利用ida python 实现复原函数调用的参数 (仅对数据被简单硬编码有效)
  9. linux VIM 命令详解
  10. 容大热敏打印机打印纸张出半截,测试页不出嗡嗡响
  11. (二) redfish简单信息获取
  12. dubbo源码解析之dubbo配置解析
  13. Game101课程笔记_lecture06_光栅化2
  14. python dataframe取行_如何获取pandas DataFrame的最后N行?
  15. intel 服务器最新cpu,英特尔发布至强 Xeon W-3300 系列服务器处理器:最高 38 核
  16. mysql eav设计模型_Magento 2数据库EAV模型结构
  17. LINUX uptime命令解读
  18. Centos7 搭建NFS文件共享存储
  19. fatal error C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include“stdafx.h“”
  20. react 前端 实现打印机打印功能

热门文章

  1. 【奥斯卡理财星体系 第三章】丨你适合追求什么样的收益率
  2. 福建2013年度翻译专业资格考试工作通知
  3. 数学外行朋友值得一读的5本经典数学书
  4. 浅谈企业信息化建设的整体规划
  5. 15个最好的免费开源电子商务平台
  6. 情境领导者-第一章、人员管理
  7. Android设备唯一标识符ID
  8. 李秘书讲写作:这节课的标题起什么好?
  9. PIR热释电红外人体感应IC
  10. Android入门:Layout