如何将 @cache_page 装饰器与基于 Django 类的视图一起使用?

dan*_*els 3 python django

似乎唯一有效的方法是在 urls.py 中添加装饰器,这很丑陋。

有什么方法可以在视图中应用这个装饰器吗?

class HomeView(View):
    @method_decorator(cache_page(60 * 60))
    def dispatch(self, *args, **kwargs):
        return super(HomeView, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过上述方法,但似乎不起作用。

Phi*_*ord 5

根据文档,您可以使用method_decorator来装饰视图的方法。最简洁的方法是这样的:dispatch()

from django.utils.decorators import method_decorator
from django.views.generic import ListView

@method_decorator(cache_page(60*60), name='dispatch')
class MyListView(ListView):
    # Your view code here.
Run Code Online (Sandbox Code Playgroud)