Пожалуйста, объясните строку кода, которую я упомянул - PullRequest
0 голосов
/ 01 ноября 2019

Это миксин, который я видел в книге.

from django.core.cache import caches
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_cookie

class CachePageVaryOnCookieMixin:
    cache_name = 'default'

    @classmethod
    def get_timeout(cls):
        if hasattr(cls, 'timeout'):
            return cls.timeout
        cache = caches[cls.cache_name]
        return cache.default_timeout

    @classmethod
    def as_view(cls, *args, **kwargs):
        view = super().as_view(*args, **kwargs)
        view = vary_on_cookie(view)
        view = cache_page(timeout = cls.get_timeout(), cache = cls.cache_name)(view)
        return view

В as_view () view = cache_page(timeout = cls.get_timeout(), cache = cls.cache_name)(view) какая польза от (view) наконец. Это литье по типу?

1 Ответ

1 голос
/ 01 ноября 2019

cache_page - это функция, которая возвращает другую функцию, которая принимает представление в качестве параметра. Это также можно разделить на две части так:

callable_func = cache_page(timeout = cls.get_timeout(), cache = cls.cache_name)
return callable_func(view)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...