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/')
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日晚

你可能感兴趣的:(Flask框架,flask,学习,python)