[英]flask pass variable from one function to another function
正如您所看到的代碼。 我想將變量q
從函數home()
傳遞到函數search()
。
@app.route("/",methods=['GET','POST'])
def home():
result = Mylist.query.all()
return render_template('index.html',result=result)
q = request.form.get("q")
@app.route("/search.html")
def search():
d = q
var='%'+d+'%'
result = Mylist.query.filter(Mylist.type.like(var)
return render_template('search.html',result=result)
其中index.html
將包含:
<form action="/search.html" method="get" autocomplete="off" class="subscribe-form">
<div class="form-group d-flex">
<input type="text" class="form-control" placeholder="Enter your search" name="q" id="q" value="{{q}}">
<input type="submit" value="Search" class="submit px-3">
</div>
</form>
現在您將在 url 中看到/search.html?q=top
現在您可以使用q=request.args.get("q")
輕松傳遞這個q=top
...
@app.route("/search.html",methods=['GET'])
def search():
q =request.args.get("q")
d=str(q)
var='%'+d+'%'
myresult = Mylist.query.filter(Mylist.type.like(var)| Mylist.title.like(var)).all()
選項1:
在函數內部創建和更新的變量僅存在於該函數中。
從Python 文檔...
“如果一個變量在函數體內的任何地方被賦值,它就會被假定為局部變量,除非明確聲明為全局變量。”
解決方案:
創建q
作為函數之外的變量,這樣它不僅被困在函數home
而且現在普遍適用於任何和所有函數。 任何函數都可以使用或更新這樣的變量。
選項 2:
或者,您可以嘗試將q
作為函數參數傳遞。
在下面的示例中,您將調用函數search
但添加了參數q
。 search
功能本身將引用相同的q
作為稱為input
的東西(或選擇您自己的名字/單詞)。
@app.route("/",methods=['GET','POST'])
def home():
result = Mylist.query.all()
q = request.form.get("q")
search( q )
return render_template('index.html',result=result)
@app.route("/search.html")
def search( input ):
d = input
var='%'+d+'%'
result = Mylist.query.filter(Mylist.type.like(var)
return render_template('search.html',result=result)
定義一個全局列表,將第一個視圖函數中的變量附加到列表中,並訪問第二個視圖函數中的最后一個索引值。
var_list = []
@app.route("/",methods=['GET','POST'])
def home():
result = Mylist.query.all()
return render_template('index.html',result=result)
q = request.form.get("q")
var_list.append(q)
@app.route("/search.html")
def search():
d = var_list.pop()
var='%'+d+'%'
result = Mylist.query.filter(Mylist.type.like(var)
return render_template('search.html',result=result)
您的 index.html 將包含
<form action="/search.html" method="get" autocomplete="off" class="subscribe-form">
<div class="form-group d-flex">
<input type="text" class="form-control" placeholder="Enter your search" name="q" id="q" value="{{q}}">
<input type="submit" value="Search" class="submit px-3">
</div>
</form>
================================================== ================================
現在您將在 url 中看到 /search.html?q=top 現在您可以通過使用輕松地傳遞這個 q=top
q=request.args.get("q")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.