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)