測開之路一百二十五:flask之urlencode參數傳遞和解析


 

 

當get請求傳參時,用?分隔參數和域名,用&分隔參數,如果參數里面本身就有&符號就會識別不出來,還是會當成分隔符,所以這些數據在傳輸的時候,就需要轉義,現在普遍是轉成urlencode編碼:%20%xx%23

在jinja2模板里面,可以使用 data|urlencode 發送urlencode編碼,而python里面又有urllib.parse.unquote()可以解析urlencode編碼

 

視圖函數

 

html:訪問"/"返回html,在html上面點擊超鏈接時請求"/rq/",get_request函數獲取數據,並解析

由於此時沒有用urlencode編碼,所以&會被視為分隔符,即只能獲取到name1

 

 

 path1

 

path2

path3

 

 

加上urlencode編碼

 

 

 

 

 

from flask import Flask, render_template
from flask import request
from urllib.parse import unquote

app = Flask(__name__)


@app.route("/")
def index():
return render_template("index.html")


@app.route("/rq/")
def get_request():
""" request數據 """
name = request.args.get('name', "沒有獲取到name") # 獲取指定參數
return unquote(name) # 解碼


if __name__ == '__main__':
app.run(debug=True)


{% set name= "name=name1&name2#name3"%}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>地址欄編碼</title>
</head>
<body>
<a href="/rq/">跳轉到path1</a>
<a href="/rq/?name=name1">跳轉到path2</a>
<a href="/rq/?name=name1&name2#name3">跳轉到path3</a>
<a href="/rq/?name={{ name|urlencode }}">跳轉到path4</a>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM