在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將只會在當前瀏覽器會話中有效。