繁体   English   中英

如何禁用django-cms AppHooks的缓存?

[英]How to disable the cache for django-cms AppHooks?

我正在一个页面上,我有一个事件列表页面 (未来事件)和一个事件审查页面 (过去的事件,存档)。

在这两个页面上我都使用了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,但事件仍在事件列表页面上。 我认为这是一个缓存问题,但我不确定从哪里开始搜索。 有什么建议么?

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

更换:

queryset = Events.objects.get_all_past()

有:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM