python学习之Flask框架(二)

简介: python学习之Flask框架(二)

request参数的使用


常用的request参数:

属性

说明

类型

values

记录请求的数据,并转换为字符串

*

form

记录请求中的表单数据

MultiDict

args

记录请求中的查询参数

MultiDict

cookies

记录请求中的cookie信息

Dict

headers

记录请求中的报文头

EnvironHeaders

method

记录请求使用的HTTP方法

GET/POST

url

记录请求的URL地址

string

files

记录请求上传的文件

*

下面是url、method、headers的简单使用:

from flask import Flask,request
app = Flask(__name__)
@app.route('/args',methods=['POST','GET'])
def index():
    url = request.url
    method  = request.method
    headers = request.headers.get('Content-Type')
    return f'hello == {url} == {method} == {headers}'
if __name__ == '__main__':
    app.run(debug=True)

url_for 函数的使用


通过函数反向找到路由地址

from flask import Flask,url_for
app = Flask(__name__)
@app.route('/index')
def index():
    return 'hello'
@app.route('/home/<int:uid>')
def home(uid):
    return f'hello{uid}'
@app.route('/show_rul')
def show_url():
    #第一个参数是函数的名字
    #url = url_for("home") 
    #第二次参数默认开始匹配路径参数了,匹配不上就会以查询参数进行处理
    url = url_for("home",uid=1001)
    return f'反向查找到的url地址:{url}'
if __name__ == '__main__':
    app.run(debug=True)

为什么选择url_for 而不选择直接在代码中拼 URL 的原因有两点:


  1. 1.将来如果修改了 URL ,但没有修改该 URL 对应的函数名,就不用到处去替换URL 。

  2. 2.url_for() 函数会转义一些特殊字符和 unicode 字符串,这些事情 url_for 会自动的帮我们转义。


响应——重定向


有两种重定向:


1.永久性重定向,此时http的状态码为301,用于旧网址废弃后需要转到新的网址。


2.暂时性重定向,此时http的状态码为302,表示页面暂时性的转跳。例如:需要登陆才能获取权限的网站,如果用户没有登录,则会重定向到登录页面。


flask中重定向


通过redirect(location,code=302)函数来实现,location表示需要定向到的url,code表示采用哪个重定向,默认为302(暂时性重定向),可以修改为301(永久性重定向)。

from flask import Flask,redirect,url_for
app = Flask(__name__)
@app.route('/login/')
def login():
    return f'登录页面'
@app.route('/info/')
def info():
    return redirect(url_for('login'),code=302)
if __name__ == '__main__':
    app.run(debug=True)

使用redirect函数时可以配合url_for函数使用可以有效提高效率,减少工作量。


响应——响应内容


返回字符串:

from flask import redirectd
@app.route('/return_str')
def return_str():
  return "hello!!"

返回JSON

from flask import jsonify
app.config['JSON_AS_ASCII'] = False
@app.route('/return_json1')
def return_json1():
  json_dict = {
    "msg_int": 10,
    "msg_str": "hello!!"
   }
  return jsonify(json_dict)
@app.route('/return_json2')
def return_json2():
  json_dict = {
    "msg_int": 10,
    "msg_str": "hello!!"
   }
  return json_dict

响应——自定义响应


需要导入Response或make_response,可以对状态码、主体部分和响应头进行修改。


具体代码如下:

from flask import Flask,Response,make_response
app = Flask(__name__)
@app.route('/')
def index():
    return Response('hello!!!!',status=500)
app.route('/home/')
def home():
    resp = make_response('创建response对象')
    resp.status = 666
    return resp
if __name__ == '__main__':
    app.run(debug=True)
相关文章
|
2天前
|
机器学习/深度学习 分布式计算 物联网
【Python机器学习专栏】联邦学习:保护隐私的机器学习新趋势
【4月更文挑战第30天】联邦学习是保障数据隐私的分布式机器学习方法,允许设备在本地训练数据并仅共享模型,保护用户隐私。其优势包括数据隐私、分布式计算和模型泛化。应用于医疗、金融和物联网等领域,未来将发展更高效的数据隐私保护、提升可解释性和可靠性的,并与其他技术融合,为机器学习带来新机遇。
|
2天前
|
机器学习/深度学习 自然语言处理 搜索推荐
【Python机器学习专栏】迁移学习在机器学习中的应用
【4月更文挑战第30天】迁移学习是利用已有知识解决新问题的机器学习方法,尤其在数据稀缺或资源有限时展现优势。本文介绍了迁移学习的基本概念,包括源域和目标域,并探讨了其在图像识别、自然语言处理和推荐系统的应用。在Python中,可使用Keras或TensorFlow实现迁移学习,如示例所示,通过预训练的VGG16模型进行图像识别。迁移学习提高了学习效率和性能,随着技术发展,其应用前景广阔。
|
2天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习中的Bagging与Boosting
【4月更文挑战第30天】本文介绍了集成学习中的两种主要策略:Bagging和Boosting。Bagging通过自助采样构建多个基学习器并以投票或平均法集成,降低模型方差,增强稳定性。在Python中可使用`BaggingClassifier`实现。而Boosting是串行学习,不断调整基学习器权重以优化拟合,适合弱学习器。Python中可利用`AdaBoostClassifier`等实现。示例代码展示了如何在实践中运用这两种方法。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
2天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
3天前
|
缓存 前端开发 安全
Python web框架fastapi中间件的使用,CORS跨域详解
Python web框架fastapi中间件的使用,CORS跨域详解
|
3天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
|
3天前
|
关系型数据库 MySQL API
Python web框架fastapi数据库操作ORM(一)
Python web框架fastapi数据库操作ORM(一)
|
3天前
|
Python
python web框架fastapi模板渲染--Jinja2使用技巧总结
python web框架fastapi模板渲染--Jinja2使用技巧总结
|
3天前
|
开发框架 网络协议 前端开发
Python高性能web框架--Fastapi快速入门
Python高性能web框架--Fastapi快速入门