Skip to content

Latest commit

 

History

History
233 lines (165 loc) · 4.46 KB

511-826432-处理异常信息_预判_数据类型处理.sy.md

File metadata and controls

233 lines (165 loc) · 4.46 KB
show version enable_checker
step
1.0
true

请求参数

回顾

  • 上次后台hello.py接收到了
    • 网页Get过来的参数
    • 尝试处理
    • 但是出了错误
    • 这个怎么办呢?🤔

前后端准备

  • 编辑pre_add.html
<!DOCTYPE htm1>
<html> 
	<head> 
		<meta charset="UTF-8" />
		<title>front </title> 
	</head> 
	<body> 
		<form action="../add" method="get">
		addendl <input type=text size=20 name=addend1> <br> 
		addend2 <input type=text size=20 name=addend2> <br> 
		<input type="submit"> 
	</body> 
</html> 

后端

  • 编辑app.py
from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/add')
def index():
    operand1 = request.args.get("addend1")
    operand2 = request.args.get("addend2")
    sum = int(operand1) + int(operand2)
    return str(sum)


if __name__ == "__main__":
    app.run(debug=True)
  • 访问网址
firefox http://127.0.0.1/static/pre_add.html

结果

  • 这次1+1终于等于2了

图片描述

  • 如果是1.5 + 1呢?

图片描述

  • 加数和被加数
  • 不一定是整数
  • 可能是浮点数

修改

  • 在第十行批量替换
    • :%10s/int/float/g

图片描述

  • 修改结果

图片描述

  • 如果传入的是
    • 字符串abc
  • 无法转化
    • 为小数呢?

修改

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/add')
def index():
    operand1 = request.args.get("addend1")
    operand2 = request.args.get("addend2")
    try:
        sum = float(operand1) + float(operand2)
    except Exception as e:
        return str(e)
    else:
        return str(sum)


if __name__ == "__main__":
    app.run(debug=True)
  • 查看异常

图片描述

  • 报错信息还是挺明确的
  • 直接给return回 响应页面了
  • 如果这个参数根本没有呢?

无参数

  • 这个报错信息有些不明确

图片描述

  • 可以自定义报错信息吗?

观察异常类型

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/add')
def add():
    operand1 = request.args.get("addend1")
    operand2 = request.args.get("addend2")
    try:
        sum = float(operand1) + float(operand2)
    except Exception as e:
        return type(e)
    else:
        return str(sum)


if __name__ == "__main__":
    app.run(debug=True)
  • 得到异常类型

图片描述

自定义异常处理

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/add')
def add():
    operand1 = request.args.get("addend1")
    operand2 = request.args.get("addend2")
    try:
        sum = float(operand1) + float(operand2)
    except ValueError as e:
        return "输入的参数无法转化为浮点数"
    except Exception as e:
        return str(type(e))
    else:
        return str(sum)


if __name__ == "__main__":
    app.run(debug=True)
  • 运行结果

图片描述

  • 服务要到位

服务

  • 只有把方方面面都处理得妥帖之后
  • 才能顺利完成茶坊

图片描述

  • 不能哪壶不开提那壶
  • 而是处理周全
  • 要什么给什么
  • 知道可能会出什么错

见过世面

  • 客人是来自
    • 五湖四海
    • 三教九流
    • 五行八作

图片描述

  • 客人多了什么样的情况都有可能发生
  • 就需要堂倌留神长眼
  • 我们开发网站应用也要长个心眼
  • 先把当前这个应用备份到本地

总结 🤨

  • 这次 研究了 异常的处理
    • 有相应的 处理代码
    • 还可以 自定义报错信息
  • 通过url的方式传递参数很方便
  • 不过所有的参数都在地址栏里面
  • 可以随意修改
  • 很不安全

图片描述

  • 可以有什么方法把这些参数藏起来吗?🤔
  • 下次再说!👋