【问题标题】:How to disable the cache for django-cms AppHooks?如何禁用 django-cms AppHooks 的缓存?
【发布时间】:2017-05-22 19:02:26
【问题描述】:

我正在处理一个有event-list page(未来事件)和event-review page(过去事件,存档)的页面。

在这两个页面上,我都使用 django-cms AppHook,因为我也有详细视图。

活动后的第二天,活动应隐藏在活动列表中,并在活动评论页面上可见。但问题是该事件仍在事件列表页面中。

models.py

# Managers
class EventsManager(models.Manager):
"""EventsManager."""

    def get_all(self):
        return super(EventsManager, self) \
            .filter(is_visible=True) \
            .order_by('-date')

    def get_all_future(self):
        return super(EventsManager, self) \
            .filter(is_visible=True) \
            .filter(date__gte=datetime.datetime.now()) \
            .order_by('date')

    def get_all_past(self):
        return super(EventsManager, self) \
            .filter(is_visible=True) \
            .filter(date__lt=datetime.datetime.now()) \
            .order_by('-date')

views.py

class EventListView(ListView):
    template_name = 'event_list.html'
    queryset = Events.objects.get_all_future()
    paginate_by = 10

    @never_cache
    def dispatch(self, *args, **kwargs):
        return super(EventListView, self).dispatch(*args, **kwargs)

class EventArchiveView(ListView):
    template_name = 'event_archive.html'
    queryset = Events.objects.get_all_past()
    paginate_by = 20

    @never_cache
    def dispatch(self, *args, **kwargs):
        return super(EventArchiveView, self).dispatch(*args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(EventArchiveView, self).get_context_data(**kwargs)
        context['is_arcive'] = True
        return context

我尝试使用@never_cache,但该事件仍在事件列表页面上。我认为这是一个缓存问题,但我不确定从哪里开始搜索。有什么建议吗?

【问题讨论】:

    标签: python django django-cms


    【解决方案1】:

    我刚刚遇到了类似的问题,它与 Django CMS 无关。由于某种原因,我只在生产中遇到了这个问题。解决方案是使用类方法get_queryset(),而不是使用queryset 变量定义我的查询集。由于某种原因,在使用 UWSGI 运行我的 django 应用程序时,sql 查询被缓存并且我的日期过滤卡在我第一次查询的日期。

    替换:

    queryset = Events.objects.get_all_past()

    与:

    def get_queryset(self): return Events.objects.get_all_past()

    【讨论】:

      猜你喜欢
      • 2016-03-25
      • 2012-11-16
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      相关资源
      最近更新 更多