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. 将来如果修改了 URL ,但没有修改该 URL 对应的函数名,就不用到处去替换URL 。
  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)

                                                                                                           2022年10月18日晚

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我还可以熬_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值