Django 在同一个视图函数中使用会话和 cookie

Posted

技术标签:

【中文标题】Django 在同一个视图函数中使用会话和 cookie【英文标题】:Django using sessions and cookies in the same view function 【发布时间】:2021-08-17 16:09:25 【问题描述】:

我正在尝试设置 cookie 并同时使用会话,但是当我设置 cookie 时,它​​没有检测到网站上的 cookie。我不知道我做错了什么,所以请帮助我。谢谢。

view.py

from django.http import HttpResponse

def session(request):
    num_visits = request.session.get('num_visits', 0) + 1
    request.session['num_visits'] = num_visits
    resp = HttpResponse('View Count=' +str(num_visits) + ' e78e39ea')
    resp.set_cookie('dj4e_cookie', 'e78e39ea', max_age=1000)
    resp.set_cookie('zap', 42)
    return HttpResponse(resp)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.session),
]

【问题讨论】:

【参考方案1】:

您应该返回响应,而不是将其包装在 另一个响应中:

def session(request):
    num_visits = request.session.get('num_visits', 0) + 1
    request.session['num_visits'] = num_visits
    resp = HttpResponse(f'View Count=num_visits e78e39ea')
    resp.set_cookie('dj4e_cookie', 'e78e39ea', max_age=1000)
    resp.set_cookie('zap', 42)
    return resp  # ← return the response itself

【讨论】:

以上是关于Django 在同一个视图函数中使用会话和 cookie的主要内容,如果未能解决你的问题,请参考以下文章

React Django REST框架会话没有持久化/工作

Django 会话意外丢失数据

在 Django 单元测试中使用会话对象

Django:将会话信息传递给下一个模板和视图

Jquery Ajax 发布以更新视图中的 django 会话

Django:在 forms.py clean 函数中访问请求