使 Django 1.3.1 中的视图缓存过期

2024-05-13

我正在尝试使模型上的视图级缓存过期post_save(这是通过设置的https://docs.djangoproject.com/en/1.3/topics/cache/?from=olddocs#the-per-view-cache https://docs.djangoproject.com/en/1.3/topics/cache/?from=olddocs#the-per-view-cache)。我做了一些谷歌搜索,并在这里找到了这个答案:使 Django 中的视图缓存过期? https://stackoverflow.com/questions/2268417/expire-a-view-cache-in-django但这对我不起作用。

我在 freenode 上的 #django 房间询问了一下,一致认为这可能是由于1.3 中最近进行的缓存更改 https://docs.djangoproject.com/en/1.3/releases/1.3/#caching-changes

有谁知道如何清除已关闭的模型的缓存条目get_absolute_url()?


我想到了!

干杯ilvar https://stackoverflow.com/users/1215136/ilvar为我指明了正确的方向。我的实现如下。我创建了一个名为cache_key并将 post_save 接收器添加到模型的子类中,我需要在更新模型后清除其视图级缓存。随时欢迎提出改进建议!

from django.conf import settings
from django.core.cache import cache
from django.db.models.signals import post_save
from django.http import HttpRequest
from django.utils.cache import _generate_cache_header_key

from someapp.models import BaseModelofThisClass

class SomeModel(BaseModelofThisClass):
    ...
    @property
    def cache_key(self):
        # Create a fake request object
        request = HttpRequest()
        # Set the request method
        request.method = "GET"
        # Set the request path to be this object's permalink.
        request.path = self.get_absolute_url()
        # Grab the key prefix (if it exists) from settings
        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
        # Generate this object's cache key using django's key generator
        key = _generate_cache_header_key(key_prefix, request)
        # This is a bit hacky but necessary as I don't know how to do it
        # properly otherwise. While generating a cache header key, django
        # uses the language of the HttpRequest() object as part of the
        # string. The fake request object, by default, uses
        # settings.LANGUAGE_CODE as it's language (in my case, 'en-us')
        # while the true request objects that are used in building views
        # use settings.LANGUAGES ('en'). Instead of replacing the segment
        # of the string after the fact it would be far better create a more
        # closely mirrored HttpRequest() object prior to passing it to
        # _generate_cache_header_key().
        key = key.replace(settings.LANGUAGE_CODE, settings.LANGUAGES[settings.DEFAULT_LANGUAGE][0])

        return key

    @receiver(post_save)
    def clear_cache_for_this_item(sender, instance, **kwargs):
        # If this is a sub-class of another model
        if sender not in BaseModelofThisClass.__subclasses__():
            return
        else:
            cache.delete(instance.cache_key)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使 Django 1.3.1 中的视图缓存过期 的相关文章

  • django render_to_string 缺少信息

    为什么我的电子邮件 正文部分 不包含该消息 这是我的代码 message render to string contact template txt contact name contact name contact email conta
  • 如何将经度和纬度转换为国家或城市?

    我需要将经度和纬度坐标转换为国家或城市 python中有这样的例子吗 提前致谢 我使用谷歌的API from urllib2 import urlopen import json def getplace lat lon url http
  • 同情因子简单关系

    我在 sympy 中有一个简单的因式分解问题 无法解决 我在 sympy 处理相当复杂的积分方面取得了巨大成功 但我对一些简单的事情感到困惑 如何得到 phi 2 2 phi phi 0 phi 0 2 8 因式分解 phi phi 0 2
  • Python - 为什么这段代码被视为生成器?

    我有一个名为 mb 的列表 其格式为 Company Name Rep Mth 1 Calls Mth 1 Inv Totals Mth 1 Inv Vol Mth 2 等等 在下面的代码中 我只是添加了一个包含 38 个 0 的新列表 这
  • 如何通过 Python socket.send() 发送字符串以外的任何内容

    我对 Python 编程非常陌生 但出于必要 我必须快速地将一些东西组合在一起 我正在尝试通过 UDP 发送一些数据 除了当我执行 socket send 时 我必须以字符串形式输入数据之外 一切都正常 这是我的程序 这样你就可以看到我在做
  • 使用 Pandas 查找自滚动高点以来的周期数

    我在 Pandas 中使用rolling max函数 http pandas pydata org pandas docs stable computation html moving rolling statistics moments
  • Python3模拟用另一个函数替换函数

    如何使用 python 中的另一个函数来模拟一个函数 该函数也将提供一个模拟对象 我有类似以下操作的代码 def foo arg1 arg2 r bar arg1 does interesting things 我想替换的实现bar函数 让
  • python 语言环境奇怪的错误。这究竟是怎么回事?

    所以今天我升级到了 bazaar 2 0 2 我开始收到这条消息 顺便说一句 我在雪豹上 bzr warning unknown locale UTF 8 Could not determine what text encoding to
  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • ASP.Net 使用状态服务器和缓存增加 MaxProcesses(网络花园)

    我在 IIS7 上有一个 ASP Net 网站 我计划增加 MaxProcesses 以匹配服务器上的核心数量 4 核心 64 位 Windows Server 2008 根据我的阅读 如果我增加 MaxProcesses 来创建一个网络花
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • django 模板和列表字典

    我正在使用 django 的模板系统 但遇到以下问题 我将一个字典对象 example dictionary 传递给模板 example dictionary key1 value11 value12 我想做以下事情 for key in
  • 指定 Parquet 属性 pyspark

    如何在 PySpark 中指定 Parquet 块大小和页面大小 我到处搜索 但找不到任何有关函数调用或导入库的文档 根据火花用户档案 https mail archives apache org mod mbox spark user 2
  • 将带有两层分隔符的字符串转换为字典 - python

    给定一个字符串 s x t1 ny t2 nz t3 我想转换成字典 sdic x 1 y 2 z 3 我通过这样做让它工作 sdic dict tuple j split t for j in i for i in s split n F
  • if/else 在 while 循环内正确缩进[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我开始学习 Python 编程大约几周了 我遇到了一些麻烦 下面的代码是一个小程序 用于检查列表中是否有偶数 如果找到第一个偶数
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • Django基于PK和另一个字段保存对象

    我正在尝试将 postgresql 中的分区表与 Django 安装一起使用 通过Google搜索主题 我发现Django本身不支持分区 所以我自己对表进行了分区 我根据第二个字段对表进行分区 该字段是另一个表上的外键 基本模型设置如下 c
  • Django Azure AD 集成

    我目前正在使用 Azure AD 将 SSO 集成到 Django 项目中 我目前正在使用该包 https github com leibowitz django azure ad auth https github com leibowi
  • python IDLE shell 似乎无法正确处理一些转义

    例如 b 退格键打印为四元 在下面的示例中显示为 但是 n 换行是可以的 gt gt gt print abc bd abc d gt gt gt print abc nd abc d 我在 Vista pro python 2 7 下运行
  • 如何获取所有Python标准库模块的列表?

    我想要类似的东西sys builtin module names标准库除外 其他不起作用的事情 sys modules 只显示已经加载的模块 sys prefix 包含非标准库模块并且似乎无法在 virtualenv 内工作的路径 我想要这

随机推荐

  • Phoenix 中的 web/static 和 priv/static 有什么区别?

    我对长生不老药和凤凰是新手 现在我在凤凰城的静态资产方面遇到了麻烦 我想在我的页面中添加一个js文件 我在我的模板中添加以下代码 js test js gt gt 然后创建一个js文件web static js test js 但是 我收到
  • 应用于整个 HTML 的 BODY 标签的背景颜色[重复]

    这个问题在这里已经有答案了 我对 html 中 body 标签的大小感到困惑 我有一个艰难的代码如下 body padding 0px height 100px background color e5e5e5 为什么背景覆盖整个页面 我认为
  • 向 jQuery 函数 Interval 添加动画

    我的问题是如何向倒计时器添加一些动画 我的意思是每次调用 Function Interval 时都需要添加一些动画 如下所示 youtube 视频链接 https www youtube com watch v A9fnvhcWPRo 第二
  • 根据窗口大小调整 div 及其内部内容的大小

    我已经查找了一百万种技术 但我无法让它发挥作用 我知道还有其他类似的帖子 如果它给任何人带来麻烦 我很抱歉 但我需要针对我的代码的具体说明 因为我很愚蠢 提前非常感谢 我希望 div 容器 contentContactBox 以及其中的所有
  • 使用特定 HTTP 方法链接到页面 (DELETE)

    如何像 Rails 那样链接到页面并让浏览器使用 DELETE 方法调用它 我试过 a href DELETE ME a 但不起作用 我使用 Node js 所以我可以用它来处理 DELETE 方法 你不能 链接只会触发 GET 请求 您可
  • R ifelse 错误地用整数替换文本

    我正在使用 Udacity 课程中的一些数据 链接 Reddit 调查回复 https s3 amazonaws com udacity hosted downloads ud651 reddit csv 我试图通过使用单个单词替代替换任何
  • 无法在 Eclipse 中连接到虚拟机

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 当我尝试在 Eclipse 上调试任何项目时 我突然开始遇到这个奇怪的错误 我不记得有什么改变让这个问题突然出现 Launch
  • File.delete 上的 Ruby (Errno::EACCES)

    我试图在使用完一些 XML 文件后删除它们 其中一个文件给了我这个错误 delete Permission denied monthly builds xml Errno EACCES Ruby 声称该文件受到写保护 但我在尝试删除它之前设
  • 将此 XML 反序列化为对象的最佳方法

    在我见过的与我的类似的其他示例中 有一个根节点 然后是一个数组节点 然后是一堆数组项 我的问题是 我的根节点is我的数组节点 所以我见过的示例似乎不适合我 而且我无法更改 XML 架构 这是 XML
  • ASP.Net 的最佳免费文件管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MySQL 全文搜索之谜

    我们的网站上有一个使用 MySQL 全文搜索的简单搜索 但由于某种原因 它似乎没有返回正确的结果 我不知道这是否是 Amazon RDS 我们的数据库服务器所在的位置 或我们请求的查询的某种问题 这是数据库表的结构 CREATE TABLE
  • 如何在 kivy FileChooser Python 中访问所有硬盘

    如何使用 kivy 1 11 1 中的列表视图或图标视图在 kivy FileChooser 中显示系统 C X J 中安装的所有硬盘驱动器 我遇到了同样的问题 最终通过为驱动器添加 快捷方式 按钮解决了这个问题 我首先使用以下命令获取所有
  • SQL Server 表中最多可以有多少行

    通常我们可以给出更多的值 在SQL Server中一个表最多可以有多少行 之后我们就无法添加新行了 有一些边缘情况 除了明显的磁盘空间问题之外 SQL Server 会阻止您添加更多行 而不是确切的行数 但值得一提 你有一个IDENTITY
  • 输出和导出之间的区别

    在 CloudFormation 中 我们能够从模板输出一些值 以便其他进程 堆栈等可以检索它们 这通常是某个名称 可能是 URL 或在堆栈创建 部署 过程中生成的名称等 我们还能够从模板 导出 返回值作为 输出 与 导出 之间有什么区别
  • 指向特定工作表的超链接

    我想从另一个电子表格中的超链接打开 Google 表格的特定工作表 我的主电子表格中有不同的链接 每个链接都应该有一个指向同一从属电子表格但指向不同工作表的超链接 我知道超链接功能 但它不会转到特定的工作表 您可以使用此自定义脚本 工具 g
  • 是否存在比 SVN 更快的集中版本控制?

    我已经使用 SVN 很长时间了 现在我们正在尝试使用 Git 我在这里谈论的不是中心化 去中心化的争论 我唯一关心的是速度 后一个工具要快得多 但有时 我需要使用一种集中式方法 这种方法比分散式方法更简单 更简单 学习曲线非常快 这节省了大
  • 如何防止灯具与 django post_save 信号代码冲突?

    在我的应用程序中 我想在新用户注册时在某些表中创建条目 例如 我想创建一个用户配置文件 然后该配置文件将引用他们的公司和他们的一些其他记录 我用 post save 信号实现了这一点 def callback create profile
  • 在 jquery 中隐藏/显示图像

    如何在单击超链接时显示 隐藏图像 a href Bandwidth a a href Upload a p align center img src media img close pn p
  • 在CDI容器中手动注册类

    我有一组通过反射实例化的类 因此它们不由 CDI 容器管理 并且上下文不会进行任何注入 我的问题是 有没有办法在 CDI 上下文中注册这些类 以便这些类由上下文管理 下面是我创建类的方式 String clazz org myorg thi
  • 使 Django 1.3.1 中的视图缓存过期

    我正在尝试使模型上的视图级缓存过期post save 这是通过设置的https docs djangoproject com en 1 3 topics cache from olddocs the per view cache https