宗次郎の故郷

导航

FLASK学习记录-Flask视图之URL

HTTP请求报文

在请求行中请求的方法通常有几种:GET 、Post 、PUT、DELETE 、TRACE、HEAD、OPTION

request对象

1.request.url: http://xxx:8000/requestInfo?date=2022
2.request.base_url: http://xxx:8000/requestInfo
3.request.url_root: http://xxx:8000/
4.request.path: /requestInfo
5.request.full_path: /requestInfo?date=2022
6.request.host: xxx:8000
7.request.host_url: http://xxx:8000/
8.request.json: GET
9.request.json: None
10.request.json: http
11.request.json: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 CCleaner/122.0.0.0
12.request.args: 2022
183.238.113.222 - - [28/Mar/2024 13:15:48] "GET /requestInfo?date=2022 HTTP/1.1" 200 -

URL传参

方法一:URL转换器:string(默认), int, float, path, any, uuid

#字符串
@app.route("/index1/<name>")
#整数
@app.route("/index2/<int:num>")
#path
@app.route("/index3/<path:subpath>")
#any
@app.route("/index4/<any(a,b,c):word>")
#uuid
@app.route("/index5/<uuid:uid>")

方法二:查询字符串

@app.route("/get1")
def get1():
    return request.args.get("str1"),request.args.get("num1")
:8000/get1?str1=SB&num1=100
@app.route("/post1",methods=["POST"])
def post1():
    return request.form.get("str1"),request.form.get("num1")
:8000/post1?str1=SB&num1=100

两种传参方式各有优劣:其中,URL定义参数可以约束数据类型,而查询字符串传参不用修改URL,更加灵活

URL反转

使用场景:根据视图函数得到所指的URL,可通过url_for函数实现

@app.route('/')
def index():
    url=url_for("prod",id=10)  
    return "url反转内容{}".format(url)

@app.route("/prod/<id>")
def prod(id):
    return "{}".format(id)
@app.route('/')
def index():
    url=url_for("prod",id=10)  
    return "url反转内容{}".format(url)

@app.route("/prod/<id>")
def prod(id):
    return "{}".format(id)

 response对象:from flask import Flask,make_response,json,jsonify

URL重定向

from flask import Flask,abort,request

app=Flask(__name__)

@app.route("/")
def root():
    return redirect(url_for("index"))

@app.route('/index')
def index():
    return 'index'

@app.route("/login", methods=['GET'])
def login():
    name = request.args.get("name")
    pwd = request.args.get("pwd")
    if name != "aaa" or pwd != "123456":
        abort(404)
    return "login successful!"

@app.errorhandler(404)
def no_found(error):
    return   "wrong name or pwd"

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=8000,debug=True)

验证
:8000/login?name=aaa&pwd=123456
View Code

 

posted on 2024-03-28 15:30  宗次郎  阅读(20)  评论(0编辑  收藏  举报