python flask 设置cookie

在Python Flask中,可以使用set_cookie方法来设置cookie。下面是不同的实现方法:

方法1:

pythonfrom flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
resp = make_response('Hello World!')
resp.set_cookie('cookie_name', 'cookie_value')
return resp

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

方法2:

pythonfrom flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
response = make_response('Hello World!')
response.headers['Set-Cookie'] = 'cookie_name=cookie_value'
return response

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

方法3:

pythonfrom flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def index():
resp = Response('Hello World!')
resp.set_cookie('cookie_name', 'cookie_value')
return resp

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

以上三种方法都可以在Flask中设置cookie。其中,方法1使用了make_response函数创建响应对象,并调用set_cookie方法设置cookie。方法2通过直接设置response.headers字典来设置cookie。方法3则是创建了一个Response对象并调用set_cookie方法设置cookie。请根据自己的需求选择适合的方法来设置cookie。

 

在Flask中,当你使用set_cookie方法设置cookie时,可以通过max_age参数来指定cookie的过期时间。max_age是以秒为单位的持续时间,表示cookie应该保持有效的时间。如果max_age是一个负数,那么cookie将是一个会话cookie,意味着它将在浏览器窗口关闭时过期。

以下是如何在Flask中设置带有max_age的cookie的示例:

pythonfrom flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
# 创建一个响应对象
resp = make_response('Hello World!')

# 设置cookie,指定cookie的名字、值、以及过期时间(以秒为单位)
# 这里设置max_age为3600,表示cookie将在1小时后过期
resp.set_cookie('cookie_name', 'cookie_value', max_age=3600)

return resp

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

如果你更喜欢直接在路由函数中返回字符串作为响应体,Flask会自动为你创建一个响应对象。在这种情况下,你可以使用Response类来设置max_age

pythonfrom flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def index():
# 直接返回字符串作为响应体,Flask会自动创建响应对象
# 使用Response类来设置cookie的max_age
return Response('Hello World!', headers={
'Set-Cookie': 'cookie_name=cookie_value; Max-Age=3600'
})

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

请注意,在Set-Cookie头中设置Max-Age时,其值必须是整数,并且单位是秒。

如果你希望cookie在浏览器关闭时过期(即会话cookie),你可以省略max_age参数,或者将其设置为-1

pythonresp.set_cookie('cookie_name', 'cookie_value', max_age=-1)

或者在Set-Cookie头中不指定Max-Age属性:

pythonheaders={
'Set-Cookie': 'cookie_name=cookie_value'
}

这样设置的cookie将只会在当前浏览器会话中有效。

 

posted @ 2024-04-11 08:13  奥兰王子  阅读(57)  评论(0编辑  收藏  举报