django - 如何为多个 View 设置 cookie?

我的站点有很多 View ,我想检查每个 View 中的 cookie,如果没有,则保存它们。但是网站有很多浏览量。

如何对所有 View 只执行一次?

最佳答案

您可以编写自定义中间件来实现您的目标,因为您有很多 View ,当然您不能更新每个 View 。自定义中间件将是这样的:

class MyCookieProcessingMiddleware(object):

    # your desired cookie will be available in every django view
    def process_request(self, request):
        # will only add cookie if request does not have it already
        if not request.COOKIES.get('your_desired_cookie'):
            request.COOKIES['set_your_desired_cookie'] = 'value_for_desired_cookie'

    # your desired cookie will be available in every HttpResponse parser like browser but not in django view
    def process_response(self, request, response):
        if not request.COOKIES.get('your_desired_cookie'):
            response.set_cookie('set_your_desired_cookie', 'value_for_desired_cookie')
        return response

在您的 settings.py 文件中,只需将路径添加到您的自定义中间件,如下所示:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'MyProject.myapp.mymodule.MyCookieProcessingMiddleware',  # path to custom class
)

中间件的顺序很重要,您的顺序在 SessionMiddleware 之后。

https://stackoverflow.com/questions/15612444/

相关文章:

arrays - @a[-@a..-2] 是什么意思?

php - 在 TYPO3 Fluid 中显示按年和按月分组的元素列表

sql - 从当前 sysdate 中检索最近两年的数据

php - XML 中的项目符号 "•"

c# - 在 XSL 中创建空格 ( )

xml - 使用 XML 或 JSON 有什么用?

.net - 将 OrderedDictionary 转换为 Dictionary

sql - 桥接表主键或复合/复合键

php - 如何解码json ajax响应

r - 均值与 fivenum : different results?