python框架flask系列(2),Python的Web框架之Flask(2)
路由参数
默认string,可以指定参数的类型限定,限定参数为int
@app.route('/user/')
def user_info(user_id):
return 'hello{}'.format(user_id)
指定请求方式
@app.route('/demo2',methods=['GET','POST'])
def demo2():
return request.method
Json数据格式
主要分为两种
Json对象:大括号所包括的
Json数据:中括号所包括的
Json字符串和字典间的转换
Json字符串转换成字典
tvs = """
{
"subjects": [
{
"rate": "7.5",
"cover_x": 4429,
"cover_x": "传闻中的陈芊芊",
"url": "https://movie.douban.com/subject/34463197/",
"playable": true,
"cover": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2602398693.webp"
},
{
"rate": "7.5",
"cover_x": 4429,
"cover_x": "传闻中的陈芊芊",
"url": "https://movie.douban.com/subject/34463197/",
"playable": true,
"cover": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2602398693.webp"
},
{
"rate": "7.5",
"cover_x": 4429,
"cover_x": "传闻中的陈芊芊",
"url": "https://movie.douban.com/subject/34463197/",
"playable": true,
"cover": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2602398693.webp"
}
]
}
"""
# tvs 是一个json字符串
import json
# json.loads()将Json字符串转化成字典
print(type(tvs))
test_dict = json.loads(tvs)
print(type(test_dict))
print([x for x in test_dict["subjects"][:2]])
主要为
import json
# json.loads()将Json字符串转化成字典
test_dict = json.loads(tvs)
字典转换成Json字符串
# 将字典类型转换成json
json_dict = {
"name":"zhangsan",
"age":18
}
# json.dumps将python字典转化成json字符串
res = json.dumps(json_dict)
print(type(res))
主要为
import json
# json.dumps将python字典转化成json字符串
res = json.dumps(json_dict)
返回Json格式
使用jsonify
from flask import jsonify
@app.route('/demo3')
def demo3():
json_dict = {
"name":"xiaoming",
"age":18,
}
return jsonify(json_dict)
使用json.dumps()
import json
@app.route('/demo4')
def demo4():
json_dict = {
"name":"xiaoming",
"age":18,
}
res = json.dumps(json_dict)
return res
注:不推荐使用 json.dumps() 转换成Json字符串返回,因为返回的数据要符合HTTP协议规范,如果是json需要指定 Content-Type: application/json
重定向
重定向
# 重定向
from flask import redirect
@app.route('/demo5')
def demo5():
return redirect("https://www.bilibili.com/")
重定向到自己的视图函数
# 重定向到自己的视图函数
from flask import url_for
@app.route('/demo6')
def demo6():
return redirect(url_for('demo3'))
重定向到带有参数的视图函数视图函数
# 重定向到带有参数的视图函数视图函数
@app.route('/demo7')
def demo7():
# {% url '' 参数 %}Django
return redirect(url_for('user_info',user_id=123))
自定义状态码
# 自定义状态码
@app.route('/demo8')
def demo8():
# python 中的return可以一次返回多个对象
return '自定义状态码', 666
使用正则表达式匹配路由
1、 导入转换器基类,在flask中,所有的路由匹配规则都是使用转换器对象进行记录
2、 自定义转换器继承BaseConverter
3、 添加转换器到默认的字典中
4、 使用自定义转换器实现自定义规则匹配
from flask import Flask
from werkzeug.routing import BaseConverter
app = Flask(__name__)
# 1、 导入转换器基类,在flask中,所有的路由匹配规则都是使用转换器对象进行记录
# 2、 自定义转换器继承BaseConverter
# 3、 添加转换器到默认的字典中
# 4、 使用自定义转换器实现自定义规则匹配
class RegexConverter(BaseConverter):
def __init__(self,url_map,*args):
super(RegexConverter, self).__init__(url_map)
# 将第一个参数当做匹配规则进行保存
print(args[0])
self.regex = args[0]
app.url_map.converters['re'] = RegexConverter
@app.route('/user/')
def user_info(user_id):
# return 'user_id %d'% user_id
return 'user_id %{}'.format(user_id)
if __name__ == '__main__':
app.run(debug=True)
补获错误异常
1.主动抛出 http异常状态码(只能抛出http协议错误的状态码)
from flask import Flask,abort
app = Flask(__name__)
@app.route('/')
def index():
# 主动抛出 http异常状态码
# 只能抛出http协议错误的状态码
abort(500)
return 'haha'
if __name__ == '__main__':
app.run(debug=True)
2.捕获错误
errorhandler装饰器
from flask import Flask,abort
app = Flask(__name__)
@app.route('/')
def index():
abort(500)
a = 0
b = 10/a
return 'haha'
# 捕获错误
# errorhandler装饰器
@app.errorhandler(500)
def errorhandler_server(e):
return '服务器坏了'
if __name__ == '__main__':
app.run(debug=True)
3.捕获指定的错误
from flask import Flask,abort
app = Flask(__name__)
@app.route('/')
def insex():
a = 0
b = 10/a
return 'haha'
# 捕获指定的错误
@app.errorhandler(ZeroDivisionError)
def ZeroDivisionError(e):
return '除数不能为0'
if __name__ == '__main__':
app.run(debug=True)
python框架flask系列(2),Python的Web框架之Flask(2)相关推荐
- Python数据分析学习系列 十三 Python建模库介绍
Python数据分析学习系列 十三 Python建模库介绍 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 ...
- python django 动态网页_Django-手撸简易web框架-实现动态网页-wsgiref初识-jinja2初识-python主流web框架对比-00...
自己动手实现一个简易版本的web框架 在了解python的三大web框架之前,我们先自己动手实现一个. 备注: 这部分重在掌握实现思路,代码不是重点 代码中也有许多细节并未考虑,重在实现思路 手撸一个 ...
- 什么是web框架?解析为什么要用web框架?
我们常用的web前端框架其实简单称呼叫web框架,现阶段web前端技术成熟,从视觉体验到用户体验都是比较好的,这也是从简单到复杂的web前端框架技术实现的,在国内前端技术开发人员也是非常的多,市面上的 ...
- go语言 echo框架_如何在Go Echo Web框架中设置嵌套HTML模板
go语言 echo框架 by Ying Kit Yuen 英杰苑 如何在Go Echo Web框架中设置嵌套HTML模板 (How to setup a nested HTML template in ...
- python数据挖掘案例系列教程——python实现搜索引擎
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 今天我们使用python实现一个网站搜索引擎.主要包含两个部分.网站数据库的生成.搜索引擎.其中搜索引擎部分我们使用单词频度算法.单词 ...
- python网络爬虫系列教程——Python+PhantomJS +Selenium组合应用
全栈工程师开发手册 (作者:栾鹏) python教程全解 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器. 理 ...
- python网络爬虫系列教程——python中urllib、urllib2、cookie模块应用全解
全栈工程师开发手册 (作者:栾鹏) python教程全解 python数据挖掘库urllib.urllib2.cookie知识全解.本文使用python2.7环境,如果需要使用python3的环境只需 ...
- Python 全栈系列89 - python 发微博文字+图片
说明 通过python可以把图文信息程序化的发布到微博上,属于广播方式.前面已经用腾讯云的短消息实现了即时点对点的方式(0.045/条),以及通过邮件实现了非实时的点对点通信(非实时,免费).未来还可 ...
- Python自动化办公系列之Python操作PDF
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 输 作者介绍: 大家可以叫我黄同学(博客名:Huang Supre ...
最新文章
- JTEXTFIELD
- 设计模式之抽象工厂模式学习笔记
- Python也有做大型游戏的潜力?原来我们小看了Python,无所不能!!
- python:将时间戳转换成格式化日期
- 计算机网络通信中常用的检错码,4月全国高等教育自学考试计算机网络与通信试题及答案解析...
- 执行import xlrd,报错ModuleNotFoundError: No module named 'xlrd'
- Alexa市场占有率分析:Compute、CDN、DNS
- Android下OpenSLES播放PCM音频文件
- docker registry push 覆盖_Maven一键部署Springboot到Docker仓库,为自动化做准备
- 如何选择一款好的倾斜摄影相机
- 计算机报名503,503 service temporarily unavailable是什么意思【解决方法】
- boost | 线程与并发(一)atomic
- php x63 157 162,浙江理工大学 我的编程之路 零基础学C/C++ 200题 标程/题解
- java 距离转坐标_Java经纬读坐标的距离计算
- C# 微信支付之JSAPI支付
- 深度学习量化总结(PTQ、QAT)
- 编程之美 一摞烙饼问题
- 物联网平台-工业4.0应用程序的边缘处理
- texstudio深色主题设置
- 微信好友删除了怎么找回来?
热门文章
- pandas对dataframe的数据行进行随机抽样(Random Sample of Rows):使用sample函数进行数据行随机抽样(有放回的随机抽样,replacement)
- AttributeError: ‘FPDF‘ object has no attribute ‘unifontsubset‘
- 机器学习数据清洗之异常数据处理、标准差法、MAD法、箱图法、图像对比法、异常值处理准则
- cross-entropy(交叉熵)是什么?用了表征什么东西?
- matplotlib绘制带比例(percentile)的堆叠(stacked)条形图(bar plot)
- laravel php跨域请求,Laravel 5.x设置跨域访问
- Linux下如何查看硬件信息?
- PacBio Sequencing and Its Applications PacBio测序及其应用
- php批量请求url_php请求url的方法小结
- ubuntu安装mysql 密码忘了怎么办_在ubuntu上面安装mysql都密码忘记及一些常用命令...