我想统计该页面的访问次数。下面是相同的代码。当我运行代码时,它不会设置“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)
发生了一些事情导致了意想不到的结果。
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 之间的相等性,这可能不是你想要做的。
我不确定你为什么使用两种不同的 cookie
user_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
这可能接近您想要实现的目标。
蟒蛇快乐
{% endfor %} 和 {% endif %}: Завершают циклы и условные блоки.
{% endwith %}: Завершает блок with, освобождая переменную 消息。
示例: Если ваша веб-приложение использует шаблон для отображения сообщений об успехе или ошибках после вы олнения пределенных действий (например, после отправки формы), он будет отображать сообщения, такие как «Форма успешно отправлена » или «Произошла ошибка при отправке формы», если таковые имеются.
Есть что-то конкретное,что вы хотели бы узнать или изменить в этом коде?
Горрыая 37 письмо как дала ум кскк как дала как от как избавиться горавая кк дав дроеня ккак дала как