我想計算頁面的訪問次數。下面是相同的代碼。當我運行代碼時,它沒有設定 'visit_count' cookie 并且 '/visit' 回傳 'None' 值。有什么問題?
from flask.helpers import make_response
app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def show_page():
return render_template('cookiecounter.html')
@app.route('/setcookie', methods=['GET','POST'])
def setcookie():
resp = make_response('Welcome to our site!')
resp.set_cookie('user_visit',str(1), max_age=5*60*60)
return resp
@app.route('/visit', methods=['GET','POST'])
def visit():
vc=request.cookies.get('user_visit')
if vc==1:
return 'You are visiting for the first time'
else:
vscount=int(vc) 1
resp1 = make_response('new visit')
resp1.set_cookie('visit_count',str(vscount), max_age=5*60*60)
inc_count=request.cookies.get('visit_count')
return str(inc_count)
if __name__=="__main__":
app.run(debug=True)
uj5u.com熱心網友回復:
有幾件事情正在發生,導致了意想不到的結果。
resp1.set_cookie('visit_count',str(vscount), max_age=5*60*60)
當您這樣做時,您實際上還沒有設定 cookie 的值,只是準備回應,以便在客戶端收到您的回應后設定 cookie。
inc_count=request.cookies.get('visit_count')
由于前面的陳述句實際上并未設定任何 cookie,因此這實際上檢索了與您第一次呼叫它時相同的值,即舊值。
return str(inc_count)
還記得您是如何設定回應以便在客戶端上設定 cookie 的嗎?由于您沒有回傳該回應,因此永遠不會設定更新的 cookie,而您只剩下舊的 cookie(在您的情況下根本沒有 cookie)。另外,您還回傳了舊值,因為您之前在行中檢索過它。
另一件事是您正在檢查包含字串“1”和數字 1 的變數之間的相等性,這可能不是您想要做的。
我不確定您為什么使用兩種不同的 cookieuser_visit和visit_count.
from flask.helpers import make_response
from flask import Flask, request
app = Flask(__name__)
@app.route('/visit', methods=['GET','POST'])
def visit():
vc=request.cookies.get('user_visit', "1")
resp = make_response(f"This is visit number {int(vc)}")
vscount=int(vc) 1
resp.set_cookie('user_visit',str(vscount), max_age=5*60*60)
return resp
這可能接近您想要實作的目標。
- https://docs.python.org/3/library/stdtypes.html#dict.get (dict get)
- https://www.python.org/dev/peps/pep-0498/(字串插值)
快樂的蟒蛇
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358959.html
