MCPcopy
hub / github.com/django/django / set_cookie

Method set_cookie

django/http/response.py:218–280  ·  view source on GitHub ↗

Set a cookie. ``expires`` can be: - a string in the correct format, - a naive ``datetime.datetime`` object in UTC, - an aware ``datetime.datetime`` object in any time zone. If it is a ``datetime.datetime`` object then calculate ``max_age``.

(
        self,
        key,
        value="",
        max_age=None,
        expires=None,
        path="/",
        domain=None,
        secure=False,
        httponly=False,
        samesite=None,
    )

Source from the content-addressed store, hash-verified

216 return self.headers.get(header, alternate)
217
218 def set_cookie(
219 self,
220 key,
221 value="",
222 max_age=None,
223 expires=None,
224 path="/",
225 domain=None,
226 secure=False,
227 httponly=False,
228 samesite=None,
229 ):
230 """
231 Set a cookie.
232
233 ``expires`` can be:
234 - a string in the correct format,
235 - a naive ``datetime.datetime`` object in UTC,
236 - an aware ``datetime.datetime`` object in any time zone.
237 If it is a ``datetime.datetime`` object then calculate ``max_age``.
238
239 ``max_age`` can be:
240 - int/float specifying seconds,
241 - ``datetime.timedelta`` object.
242 """
243 self.cookies[key] = value
244 if expires is not None:
245 if isinstance(expires, datetime.datetime):
246 if timezone.is_naive(expires):
247 expires = timezone.make_aware(expires, datetime.UTC)
248 delta = expires - datetime.datetime.now(tz=datetime.UTC)
249 # Add one second so the date matches exactly (a fraction of
250 # time gets lost between converting to a timedelta and
251 # then the date string).
252 delta += datetime.timedelta(seconds=1)
253 # Just set max_age - the max_age logic will set expires.
254 expires = None
255 if max_age is not None:
256 raise ValueError("'expires' and 'max_age' can't be used together.")
257 max_age = max(0, delta.days * 86400 + delta.seconds)
258 else:
259 self.cookies[key]["expires"] = expires
260 else:
261 self.cookies[key]["expires"] = ""
262 if max_age is not None:
263 if isinstance(max_age, datetime.timedelta):
264 max_age = max_age.total_seconds()
265 self.cookies[key]["max-age"] = int(max_age)
266 # IE requires expires, so set it if hasn't been already.
267 if not expires:
268 self.cookies[key]["expires"] = http_date(time.time() + max_age)
269 if path is not None:
270 self.cookies[key]["path"] = path
271 if domain is not None:
272 self.cookies[key]["domain"] = domain
273 if secure:
274 self.cookies[key]["secure"] = True
275 if httponly:

Callers 6

set_signed_cookieMethod · 0.95
delete_cookieMethod · 0.95
process_responseMethod · 0.45
_update_cookieMethod · 0.45
_set_csrf_cookieMethod · 0.45
set_languageFunction · 0.45

Calls 3

http_dateFunction · 0.90
timeMethod · 0.80
nowMethod · 0.45

Tested by

no test coverage detected