簡體   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