详解Python Flask API 示例演示(附cookies和session)
作者:大数据老司机 发布时间:2021-12-03 18:37:29
一、概述
Python Flask 是一个轻量级的 Web 框架,它提供了一个易于使用的 API 来创建 Web 应用程序。在 Flask 中,我们可以使用 Python 函数来定义 Web 应用程序的路由和处理程序。
二、常用函数讲解
以下是一些常见的 Python Flask API 函数:
1)Flask() 函数
这个函数是 Flask 应用程序的核心,用来创建一个新的 Flask 实例。
from flask import Flask
app = Flask(__name__)
2)route() 函数
这个函数用来指定路由和请求方法。可以使用多个 route()
函数来定义多个路由。
@app.route('/')
def hello_world():
return 'Hello, World!'
3)jsonify() 函数
这个函数可以将 Python 对象转换为 JSON 格式的响应对象。
from flask import jsonify
@app.route('/users')
def get_users():
users = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 35}
]
return jsonify(users)
4)render_template() 函数
这个函数用来渲染模板并返回 HTML 响应对象。可以使用模板引擎来动态生成 HTML。
from flask import render_template
@app.route('/profile/<username>')
def profile(username):
return render_template('profile.html', name=username)
5)redirect() 函数
这个函数可以将请求重定向到另一个 URL。
from flask import redirect
@app.route('/redirect')
def redirect_to_home():
return redirect('/')
6)url_for() 函数
这个函数用于生成 URL,可以使用视图函数的名称作为参数。
from flask import url_for
@app.route('/profile/<username>')
def profile(username):
return f'Hello, {username}! Your profile URL is {url_for("profile", username=username)}.'
7)before_request() 函数
这个函数用来注册一个函数,在每个请求之前执行。
@app.before_request
def before_request():
if 'user_id' not in session and request.endpoint not in ['login', 'static']:
return redirect(url_for('login'))
8)after_request() 函数
这个函数用来注册一个函数,在每个请求之后执行。
@app.after_request
def after_request(response):
response.headers['X-Frame-Options'] = 'SAMEORIGIN'
return response
9)abort() 函数
这个函数用于在视图函数中引发异常,并返回一个错误响应。
from flask import abort
@app.route('/users/<int:user_id>')
def get_user(user_id):
user = User.query.get(user_id)
if user is None:
abort(404)
return jsonify(user.to_dict())
10)send_file() 函数
这个函数用于发送文件作为响应,可以将文件作为字节流或者文件路径来发送。
from flask import send_file
@app.route('/download')
def download_file():
file_path = '/path/to/file'
return send_file(file_path, as_attachment=True)
三、常用对象讲解
1)request 对象
这个对象表示客户端发出的请求,包含请求头和请求体等信息。可以使用 request
对象来获取客户端发送的数据。
from flask import request
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
return f'Hello, {username}! Your password is {password}.'
2)session 对象
这个对象可以用来存储用户会话数据,例如用户 ID 等。
from flask import session
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
if username == 'admin' and password == 'password':
session['user_id'] = 1
return redirect('/')
else:
return 'Invalid username or password.'
四、Flask 中的 cookies 与 session
1)cookies 与 session 的介绍与区别
在 Flask 中,Cookies 和 Session 都是用来跟踪用户状态的机制。
Cookie
是一小段文本数据,当一个用户访问你的网站时,服务器可以通过设置 cookie
把一些数据存储在用户的计算机上。当用户再次访问网站时,浏览器会发送 cookie
数据给服务器,以便服务器可以使用该数据来识别用户。Flask 使用 Flask-Cookie 来处理 cookies
,使用它可以设置、获取和删除 cookies
。
Session
是一种在服务器端存储的状态数据,与 Cookie
不同,Session
数据不会存储在用户的计算机上,而是存储在服务器端。当一个用户访问你的网站时,服务器会为该用户创建一个唯一的 Session ID
,并将该 ID
存储在一个 cookie
中,然后服务器使用该 Session ID
来识别用户。Flask 使用 Flask-Session
来处理 Session
,使用它可以设置、获取和删除 Session
数据。
一般来说,Session
更加安全,因为数据存储在服务器端,而且用户无法直接修改数据。Cookie
的优点是可以存储大量数据,并且可以在不同的页面之间共享。在实际使用中,开发者可以根据需要选择使用 Cookie
或 Session
。
以下是在 Flask 中使用 Cookies 和 Session 的示例:
2)示例讲解
1、使用 Flask-Cookie 设置 Cookie
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/')
def index():
response = make_response('Hello, World!')
response.set_cookie('name', 'value')
return response
if __name__ == '__main__':
app.run()
在上面的例子中,我们使用 Flask 的 make_response
函数创建一个响应对象,然后使用 set_cookie
方法设置了一个名为 name,值为 value
的 cookie
。
2、使用 Flask-Cookie 获取 Cookie
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
name = request.cookies.get('name')
return f'Hello, {name}!'
if __name__ == '__main__':
app.run()
在上面的例子中,我们使用 Flask 的 request
对象获取了名为 name
的 cookie
的值,然后将其返回给用户。
3、使用 Flask-Session 设置和获取 Session
from flask import Flask, session
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
@app.route('/')
def index():
session['name'] = 'value'
name = session.get('name')
return f'Hello, {name}!'
if __name__ == '__main__':
app.run()
在上面的例子中,我们使用 Flask 的 session 对象设置了一个名为 name,值为 value 的 Session,并使用 get 方法获取了该 Session 的值,然后将其返回给用户。
需要注意的是,为了使用 Flask-Session
,需要在应用程序中设置一个 SECRET_KEY
。该密钥用于加密 Session
数据,以确保数据不被篡改。
来源:https://juejin.cn/post/7208885488801923132


猜你喜欢
- 函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。注意其中:map和filter返回一个惰性序列,可
- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数
- 问题描述利用栈的数据结构实现将十进制数转换成二进制数C语言实现顺序表的存储结构实现栈代码:#include <stdlib.h>
- 在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结构的,当然也能分析html结构
- 如果你想把Python嵌入C/C++中是比较简单的事情,你需要的是在VC中添加Python的include文件目录和lib文件目录。下面我们
- 使用python3调用wxpy模块,监控linux日志并定时发送消息给群组或好友,具体代码如下所示:#!/usr/bin/env pytho
- 匿名函数lambdaPython使用lambda关键字创造匿名函数。所谓匿名,意即不再使用def语句这样标准的形式定义一个函数。这种语句的目
- 直接奔入主题看下面pywebio程序,实现了Python的简陋在线编辑器from pywebio.input import *from py
- 第一步肯定是打上SQL SERVER最新的安全补丁.如果这一步都没有做好,那我们也没有继续下去的必要了。 第二步是修改默认的1433端口,并
- 通过学习装饰器可以让我们更好更灵活的使用函数,通过学会使用装饰器还可以让我们的代码更加优雅。在我们的实际工作中,很多场景都会用到装饰器,比如
- 我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑。特别是客户端部分填入查询条件时,如用普通方法将更是难上加难。以下巧
- 前言相信大家都玩过斗地主,规则就不再介绍了。直接上一张朋友圈看到的残局图:这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策
- 一、背景python是一个动态语言,可以支持我们在运行时动态的给类、对象添加属性或者方法;但是如果我们想要限制可以添加的属性或方法该怎么办呢
- 什么是 Python? Python 之父 Guido van Rossum 说:Python是一种高级程序语言,其核心设计哲学是代码可读性
- 前期的入库筛选工作已经由url管理器完成了,整理的工作自然要由url下载器接手。当我们需要爬取的数据已经去重后,下载器的主要任务的是这些数据
- 本文实例讲述了Python面向对象程序设计之继承、多态原理与用法。分享给大家供大家参考,具体如下:相关内容:继承:多继承、super、__i
- 我们把一个事物进行分解,就可以得到其中的元素。对于python中的解包来说,也是同样的使用,相信大家从名称就可以观察出来了。那么在具体的解包
- 本文实例讲述了python实现支持目录FTP上传下载文件的方法。分享给大家供大家参考。具体如下:该程序支持ftp上传下载文件和目录、适用于w
- 两年前发表的《The visual design of Web 2.0》中提到“Rounded everything”,圆角因使人感觉舒适的
- 如何定义记录集打开的游标类型和锁定类型?我们知道,打开记录集时,可以定义记录集打开的游标类型和锁定类型。在adovbs.inc文件中就定义了