0

アプリ用のカスタムcache_pageデコレータを作成しました。最初の実行では機能せず、ミドルウェアに関連するエラーがスローされます。

content_encoding = response.get("Content-Encoding", "")

AttributeError: 'bool' object has no attribute 'get'

ただし、2回目以降の実行では、キャッシュが設定されているため機能します。django debug_toolbar をインストールし、cors ミドルウェアをミドルウェアに追加しました。誰でもこれについて助けることができますか?これが私のカスタムデコレータ関数です:

def cache_page(timeout):
    """custom cache page decorator"""
    def decorator(func):
        @wraps(func)
        def wrapper(request, *args, **kwargs):
            print("wrapp", request)
            cache_key = hashlib.md5(
                iri_to_uri(request.build_absolute_uri()).encode('ascii')
            ).hexdigest()
            cached_data = cache.get(cache_key)
            if cached_data is not None:
                return cached_data
            response = func(request, *args, **kwargs)
            if (isinstance(response, Response) and response.status_code in (200, 301, 302, 304)):
                cache_timeout = timeout() if callable(timeout) else timeout
                if hasattr(response, 'render') and callable(response.render):
                    response.add_post_render_callback(
                        lambda r: cache.set(cache_key, r, cache_timeout)
                    )
                else:
                    cache.set(cache_key, response, cache_timeout)
            return response
        return wrapper
    return decorator
4

1 に答える 1