增加 Flask 中的 cookie 值

问题描述 投票:0回答:2

我想统计该页面的访问次数。下面是相同的代码。当我运行代码时,它不会设置“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) 
python flask
2个回答
0
投票

发生了一些事情导致了意想不到的结果。

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

这可能接近您想要实现的目标。

蟒蛇快乐


0
投票
  • {{ message }}
  • : Для каждого сообщения создается элемент списка (
  • ), который содержит текст сообщения.

    {% endfor %} 和 {% endif %}: Завершают циклы и условные блоки.

    {% endwith %}: Завершает блок with, освобождая переменную 消息。

    示例: Если ваша веб-приложение использует шаблон для отображения сообщений об успехе или ошибках после вы олнения пределенных действий (например, после отправки формы), он будет отображать сообщения, такие как «Форма успешно отправлена » или «Произошла ошибка при отправке формы», если таковые имеются.

    Есть что-то конкретное,что вы хотели бы узнать или изменить в этом коде?

    Горрыая 37 письмо как дала ум кскк как дала как от как избавиться горавая кк дав дроеня ккак дала как

  • © www.soinside.com 2019 - 2024. All rights reserved.