python前端学习-----Flask进阶

2023-10-27

Flask请求

Request请求对象

Request请求对象封装了从客户端发来的请求报文,可以从其中获取请求报文中的所有数据。请求解析和响应封装实际上大部分是由Werk架ug完成的,Flask子类化Werkage的请求(Requestion)和响应(Response)对象,并添加了和程序相关的特定功能。
在这里插入图片描述

request.args.get()

该方法可以获取GET请求的参数。

127.0.0.0:5000/?name=andy&age=18
#注意:以?开始,&来连接不同的信息

可以的到其中的name 和age

获取表单提交的信息

代码:

from flask import  Flask,request,render_template

app = Flask(__name__)

@app.route('/login1',methods =['GET','POST'])
#
def login1():
	#获取提交方式
    if request.method =='POST':
        username = request.form['username']
        password  = request.form['password']
        message = f':{username}  {password}'
        return message
    return render_template('login1.html')


if __name__ == '__main__':
    app.run(debug = True)
  • 注意:路由‘/login1’和视图函数login1以及渲染模板中的模板名login1.html要一致。

请求钩子

有时需要对请求进行预处理(pre processing)和后处理(posprocessing),这时可以使用Flask提供的请求钩子(Hook),以注册在请求处理的不同阶段执行的处理函数(或称为回调函数,即Callback)。

Flask的请求钩子指的是在执行视图函数前后执行的一些函数,用户可以在这些函数里面做一些操作。Flask利用装饰器提供了4种钩子函数。

  • before_first_request:在处理第一个请求前执行。
  • before_request:在每次请求前执行。
  • after_request:每次请求之后调用,前提是没有异常。
  • teardown_request:每次请求之后调用,即使有异常。
@app.before_first_request
def before_first_request():
	print('before_first_request')

Flask响应

当在浏览器中输入一个网址时,Flask会先判断是否可以找到与请求URL相匹配的路由,如果没有则返回404响应。如果找到,则调用相应的视图函数。
视图函数的返回值构成了响应报文的主体内容。当请求成功时,返回状态码默认为200。
视图函数可以返回最多由3个元素组成的元组**;响应主体、状态码和首部字段。**其中,首部字段可以为字典,或是两元素元组组成的列表。
例如,最常见的响应可以只包含主体内容,示例代码如下:

@app.route('/index')
def index():

json 数据格式

一般使用jsonify()函数

from flask import Flask,jsonify
@app.route('/index')
def index():
	return jsonify(name ="小米",age ="18")

Cookie 和 Session

Cookie 对象

Cookie指Web服务器为了存储某些数据(如用户信息)而保存在浏览器上的小型文本数据。浏览器会在一定时间内保存它,并在下一次向同一个服务器发送请求时附带这些数据。Cooks通常被用来进行用户会话管理。
简单来说,就是存储临时数据
在Flask中利用Response类提供的set_cookie()方法
如:(省略了其余部分)

#导入创建Response`的库
from flask import make_response

#获取response对象
response = make_response(('登录成功'))
#将用户名写入Cookie
response.set_cookie('username',username)
return response
  • 如果没有设置Cookie的过期时间,则在关闭浏览器时会自动清除
  • 清除Cookie
#设置过期时间为0,表示清除
response.set_cookie('username',",expires = 0)

Session对象

通俗理解,Session对象是对Cookie数据进行加密存储。

设置密钥的方法

  1. app.secret_key = '密钥’ ,密钥有自己写为字符串
  2. app.config['SECRET_KEY'] ='密钥'

使用方法

  • 写入Session
session['login_in'] = True

.Session是一个字典对象,使用上诉方法设置后,就可以根据其对应的真假来判断

  • 取值判断
if session.get('login_in'):

  • 清除
session.pop('login_in')

自定义错误页面

from flask import Flask ,request ,render_template

app = Flask(__name__)     # 实例化Flask类
app.secret_key = "mrsoft" # 设置secret_key

@app.route("/")
def index():
    '''首页'''
    return render_template('index.html')

@app.errorhandler(404)
def page_not_found(e):
    return render_template('404.html'), 404


if __name__ == "__main__":
    app.run(debug=True) # 运行程序

其中404.html就是我们自己定义的错误界面了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python前端学习-----Flask进阶 的相关文章

  • str.translate 与 str.replace - 何时使用哪一个?

    何时以及为什么使用前者而不是后者 反之亦然 目前尚不完全清楚为什么有些人使用前者以及为什么有些人使用后者 它们有不同的目的 translate只能用任意字符串替换单个字符 但一次调用可以执行多次替换 它的参数是一个特殊的表 它将单个字符映射
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 如何配置 Flask-Cache 无限超时

    在 Flask Cache 文档中 所有示例都使用有限超时 我不想在应用程序运行时刷新缓存 这可能吗 如果可以 我该怎么做 Flask Cache 使用werkzeug contrib cache在幕后 来自文档 http werkzeug
  • django 模板 - 如何动态访问变量?

    假设我有一个具有以下上下文的 django 模板 data1 this is data1 data2 this is data2 data name data2 现在我知道了data name 假设它是 data2 是否可以用它来访问变量d
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • Py2exe - Pmw WindowsError:[错误 3]

    我正在尝试使用 Py2exe 构建独立的可执行文件 我已经导入了 Pmw 类 当我运行独立可执行文件时 出现以下错误 Traceback most recent call last File py line 9 in
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 如何在matplotlib中调整x轴

    I have a graph like this x轴上的数据表示小时 所以我希望x轴设置为0 24 48 72 而不是现在的值 很难看到 0 100 之间的数据 fig1 plt figure ax fig1 add subplot 11
  • 无法导入QUERY_TERMS

    我正在运行一个网站Python and Django Django filters 2 1 installed Django 2 1 installed 当我运行时 我收到以下错误 importError Could not import
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • Python:如何在不先创建整个列表的情况下计算列表的总和?

    通常我们必须 1 声明一个列表 2 使用以下方法计算该列表的总和sum 但现在我希望指定一个以 1 开头 间隔为 4 100 个元素的列表 如下所示 1 5 9 13 17 21 25 29 33 37 我不想涉及数学公式 所以 1 如何在
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 如何使用 Python/Django 在 Facebook 中获取(和使用)扩展权限

    我正在尝试编写一个简单的应用程序 让用户授予我的代码写入其页面的 Facebook 流的权限 据我了解 它应该很简单 让用户单击一个按钮 启动一个弹出窗口 其中包含我的 Facebook 应用程序中的页面 在该页面中 他们单击授予的内容流发
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import

随机推荐

  • android live 电视 源码,GitHub - mxiaoguang/LivePlayback: Android TV直播电视节目 ,包含各央视频道及卫视频道...

    Android TV直播电视节目 更多技术博客 项目 欢迎关注公众号 Android TV开发交流群 135622564 传统电视直播节目 在Android TV上起着越来越重要的作用 央视 各地卫视 满足观众日益增长的多元化需求 看下效果
  • IV转换电路原理图

    毫安级IV转换电路如下 如果要uA级转换 可把运放改为 D795 SG 8210 L C6482等输入偏置电流在pA级的运
  • tomcat配置443端口

  • true_type与false_type

    std true type和std false type 实际上是类型别名 是两个类型 类模板 注意区分true type与false type与true和false区别 true type false type代表类型 true fals
  • 【项目实战】Python基于局部离群因子LOF算法(LocalOutlierFactor)实现信用卡数据异常值检测项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 代码讲解 如需数据 代码 文档 代码讲解可以直接到文章最后获取 1 项目背景 异常检测是数据挖掘领域研究的基本问题之一 已被广泛应用于网络入侵检测 信用卡欺诈侦查等领域 局部离群因子 简
  • 以太坊客户端Geth命令用法-参数详解

    Geth是在以太坊智能合约开发中最常用的工具 必备开发工具 一个多用途的命令行工具 熟悉Geth可以让我们有更好的效率 大家可收藏起来作为Geth命令用法手册 本文主要是对geth help的翻译 基于最新的geth 1 7 3 stabl
  • sqlite3查看数据库中有哪些表(代码)

    说实话 用代码实现sqlite3查看数据库中有哪些表我还真的没找到现成资源 网上提供的语句还真用不了 而且大多都是命令行语句 由于的做的MFC项目要用到这个功能 特意学习了下 下面分享我的成果 希望可以帮到你 环境 VS2005 inclu
  • FPGA中值滤波实现并Modelsim仿真,与MATLAB中值滤波进行对比

    文章目录 一 中值滤波算法 二 FPGA实现中值滤波 2 1 3 3窗口的生成 2 2 排序模块 2 3中值滤波模块 2 4 整体RTL图 三 modeslim仿真 四 matlab中值滤波 五 效果对比 一 中值滤波算法 1 中值滤波算法
  • 解决wangEditor表格边框显示不出来、没有的问题

    仔细阅读文档 不过我一直找表格或者边框搜索 发现没有特定的栏目 所以忽略了 当然也有我不够仔细的原因 有点着急莽荒了 链接 在官网的这个页面 从官网贴下来的 把这段复制到想要的地方就可以了
  • 自定义表单控件 [(ngModel)]

    ngModel 拆分 ngModel 将 输入 输出组合起来 进行双向数据绑定 拆分开来 输入属性 ngModel ngModelChange 输出监听元素值的变化 并同步view value与model value
  • 头都给我找烂

    mysql5 6下载 https dev mysql com downloads file id 487425 win10添加本地用户和组 https blog csdn net qq 40151857 article details 89
  • 【Linux命令集】top命令的用法详解

    在使用linux系统中 我们最长用的查看系统性能的方式就是使用命令top 通知我们只关心总体的cpu和内存的使用情况 对其他的参数基本无视 也看不懂 下面来介绍一下top的详细参数的意义 top视图 进入top的基本视图 我们来结合这个视图
  • 电容选型及计算

    一 电容容值计算 1 电容整流波形分析 经过整流后三相电压整流为六脉波电压 电压波形如下图 上图中各时期充电过程如下 在t0 t3阶段是一个T 6周期 一个完整波头阶段 在t0 t1阶段 电容放电 给负载提供能量 此时输入电压小于电容电压
  • openEuler实验之A-Tune智能调优

    1 A Tune介绍 A Tune是一款基于AI开发的系统性能优化引擎 它利用人工智能技术 对业务场景建立精准的系统画像 感知并推理出业务特征 进而做出智能决策 匹配并推荐最佳的系统参数配置组合 使业务处于最佳运行状态 1 1 A Tune
  • redis docker安装、进入命令行后启动服务

    下载redis镜像 首先查看一下redis是否正确 docker search redis 显示 NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source
  • 一文读懂工厂MES系统的详细功能介绍

    一 工单管理 MES通过工单来管理生产执行 工单状态有 创建 下达 执行 完成 取消 计划员创建工单 审核通过后释放到设备或产线 仓库可收到工单下达的通知 及时备料 产线只能看到已下达的工单 执行工单 完成后登记报工 将相关信息反馈回ERP
  • 网络编程——实现HTTP服务器端

    参考 TCP IP网络编程 尹圣雨 Web服务器端 概述 Web服务器端是 基于HTTP Hypertext Transfer Protocol 协议 将网页对应文件传输给客户端的服务器端 Hypertext 超文本 是可以根据客户端请求而
  • redis-----08-----redigo管道以及事务-管道

    1 Redis 管道 正常的情况下 redis是请求响应模式 一条请求后那么正常就会返回一个响应 例如上图 但是只存在这种情况是无法满足我们开发的需求的 所以redis给我们提供了管道 redis的管道 pipeline 相关特点 1 re
  • 概念数据模型(E-R模型)

    概念数据模型 E R模型 概念数据模型是现实世界第一层次的抽象 是数据库设计人员和用户交流的工具 因此要求概念数据模型一方面应该具有较强的语义表达能力 能够方便 直接地表达应用中的各种语义知识 另一方面应该简单 直观和清晰 能为不具备专业知
  • python前端学习-----Flask进阶

    Flask进阶 Flask请求 Request请求对象 request args get 获取表单提交的信息 请求钩子 Flask响应 json 数据格式 Cookie 和 Session Cookie 对象 Session对象 设置密钥的