Python django.views.decorators.cache 模块,cache_page() 实例源码

我们从Python开源项目中,提取了以下12个代码示例,用于说明如何使用django.views.decorators.cache.cache_page()

项目:searx-stats2    作者:dalf    | 项目源码 | 文件源码
def get_last_instancetest(instance, url_pk):
    instancetest = None

    if url_pk is not None:
        # find the last test
        instancetest = instance.instancetest_set.select_related('certificate').filter(url=url_pk).latest('timestamp')
        if instancetest is not None:
            # there is one
            add_viewinfo(instancetest)
        else:
            # there is no test
            instancetest = {}
            instancetest['result_class'] = 'label-default'
            instancetest['result_msg'] = 'Untested'
            instancetest['url'] = url
            instancetest['instance_pk'] = instance.pk

    return instancetest


# @cache_page(60 * 15)
项目:django-qr-code    作者:dprog-philippe-docourt    | 项目源码 | 文件源码
def cache_qr_code():
    """
    Decorator that caches the requested page if a settings named 'QR_CODE_CACHE_ALIAS' exists and is not empty or None.
    """
    def decorator(view_func):
        @wraps(view_func, assigned=available_attrs(view_func))
        def _wrapped_view(request, *view_args, **view_kwargs):
            cache_enabled = request.GET.get('cache_enabled', True)
            if cache_enabled and hasattr(settings, 'QR_CODE_CACHE_ALIAS') and settings.QR_CODE_CACHE_ALIAS:
                # We found a cache alias for storing the generate qr code and cache is enabled, use it to cache the
                # page.
                timeout = settings.CACHES[settings.QR_CODE_CACHE_ALIAS]['TIMEOUT']
                response = cache_page(timeout, cache=settings.QR_CODE_CACHE_ALIAS)(view_func)(request, *view_args, **view_kwargs)
            else:
                # No cache alias for storing the generated qr code, call the view as is.
                response = (view_func)(request, *view_args, **view_kwargs)
            return response
        return _wrapped_view
    return decorator
项目:DCRM    作者:82Flex    | 项目源码 | 文件源码
def cache():
    return cache_page(getattr(settings, 'CACHE_TIME', 0)) \
        if getattr(settings, 'ENABLE_CACHE', False) else lambda x: x
项目:dream_blog    作者:fanlion    | 项目源码 | 文件源码
def index(request):
    """
    ??
    :param request:
    :return:
    """
    post_list = Post.objects.filter(is_pub=True).filter(category__is_pub=True).order_by(
        '-create_time')  # ?????????
    page = request.GET.get('page')

    is_paginated = False
    if post_list.count() > PAGE_SIZE:
        is_paginated = True

    paginator = Paginator(post_list, PAGE_SIZE)
    try:
        page_obj = paginator.page(page)
    except PageNotAnInteger:
        # ??page??????????
        page_obj = paginator.page(1)
    except EmptyPage:
        # ??page?????????????
        page_obj = paginator.page(paginator.num_pages)

    # pagination_data????????????
    pagination_data = PaginationBlogPost(paginator=paginator,
                                         page_obj=page_obj, is_paginated=is_paginated).pagination_data()

    pagination_data['post_list'] = page_obj
    pagination_data['page_obj'] = page_obj
    pagination_data['paginator'] = paginator

    return render(request, 'blog/index.html', pagination_data)


# @cache_page(60 * 30)
项目:dream_blog    作者:fanlion    | 项目源码 | 文件源码
def preview(request, pk):
    """
    ????
    :param request: 
    :param pk: ??id
    :return: 
    """
    post = get_object_or_404(Post, pk=pk)

    return render(request, 'blog/detail.html', {'post': post})  # @cache_page(60 * 30)


# @cache_page(60 * 30)
项目:dream_blog    作者:fanlion    | 项目源码 | 文件源码
def category(request, pk):
    """
    ??????????????
    :param request:
    :param pk: ????
    :return:
    """
    cate = get_object_or_404(Category, pk=pk)
    if cate.is_pub:
        post_list = Post.objects.filter(category=cate).filter(is_pub=True).order_by('-create_time')
    else:
        raise Http404('????????')

    page = request.GET.get('page')

    is_paginated = False
    if post_list.count() > PAGE_SIZE:
        is_paginated = True

    paginator = Paginator(post_list, PAGE_SIZE)
    try:
        page_obj = paginator.page(page)
    except PageNotAnInteger:
        # ??page??????????
        page_obj = paginator.page(1)
    except EmptyPage:
        # ??page?????????????
        page_obj = paginator.page(paginator.num_pages)

    # pagination_data????????????
    pagination_data = PaginationBlogPost(paginator=paginator, page_obj=page_obj,
                                         is_paginated=is_paginated).pagination_data()

    pagination_data['post_list'] = page_obj
    pagination_data['page_obj'] = page_obj
    pagination_data['paginator'] = paginator

    return render(request, 'blog/index.html', pagination_data)


# @cache_page(60 * 30)
项目:basket    作者:mozmeao    | 项目源码 | 文件源码
def healthz(request):
    """for use with healthchecks. wrapped with `cache_page` to test redis cache."""
    # here to make sure DB is working
    assert Newsletter.objects.exists(), 'no newsletters exist'
    return HttpResponse('OK')
项目:extrade    作者:aza7    | 项目源码 | 文件源码
def dispatch(self, *args, **kwargs):
        return cache_page(self.get_cache_timeout())(
            super(CacheMixin, self).dispatch)(*args, **kwargs)
项目:open-synthesis    作者:twschiller    | 项目源码 | 文件源码
def cache_on_auth(timeout):
    """Cache the response based on whether or not the user is authenticated.

    Do NOT use on views that include user-specific information, e.g., CSRF tokens.
    """
    # https://stackoverflow.com/questions/11661503/django-caching-for-authenticated-users-only
    def _decorator(view_func):
        @wraps(view_func, assigned=available_attrs(view_func))
        def _wrapped_view(request, *args, **kwargs):
            key_prefix = "_auth_%s_" % request.user.is_authenticated()
            return cache_page(timeout, key_prefix=key_prefix)(view_func)(request, *args, **kwargs)
        return _wrapped_view
    return _decorator
项目:open-synthesis    作者:twschiller    | 项目源码 | 文件源码
def cache_if_anon(timeout):
    """Cache the view if the user is not authenticated and there are no messages to display."""
    # https://stackoverflow.com/questions/11661503/django-caching-for-authenticated-users-only
    def _decorator(view_func):
        @wraps(view_func, assigned=available_attrs(view_func))
        def _wrapped_view(request, *args, **kwargs):
            if request.user.is_authenticated() or messages.get_messages(request):
                return view_func(request, *args, **kwargs)
            else:
                return cache_page(timeout)(view_func)(request, *args, **kwargs)
        return _wrapped_view
    return _decorator
项目:dream_blog    作者:fanlion    | 项目源码 | 文件源码
def archives(request, year, month):
    """
     ????????????????????
     ??????????????
    :param request:
    :param year:
    :param month:
    :return:
    """
    post_list = Post.objects.filter(
        is_pub=True).filter(
        category__is_pub=True).filter(
        create_time__year=year,
        create_time__month=month).order_by(
        '-create_time')

    page = request.GET.get('page')
    is_paginated = False
    if post_list.count() > PAGE_SIZE:
        is_paginated = True

    paginator = Paginator(post_list, PAGE_SIZE)
    try:
        page_obj = paginator.page(page)
    except PageNotAnInteger:
        # ??page??????????
        page_obj = paginator.page(1)
    except EmptyPage:
        # ??page?????????????
        page_obj = paginator.page(paginator.num_pages)

    # pagination_data????????????
    pagination_data = PaginationBlogPost(paginator=paginator, page_obj=page_obj,
                                         is_paginated=is_paginated).pagination_data()

    pagination_data['post_list'] = page_obj
    pagination_data['page_obj'] = page_obj
    pagination_data['paginator'] = paginator

    return render(request, 'blog/index.html', pagination_data)


# @cache_page(60 * 30)
项目:dream_blog    作者:fanlion    | 项目源码 | 文件源码
def tag(request, pk):
    """
    ????????????
    :param request: 
    :param pk: tag?id
    :return: 
    """
    t = get_object_or_404(Tag, pk=pk)
    if t.is_pub:
        post_list = Post.objects.filter(tags=t).filter(is_pub=True).filter(category__is_pub=True).order_by(
            '-create_time')

        page = request.GET.get('page')
        is_paginated = False
        if post_list.count() > PAGE_SIZE:
            is_paginated = True

        paginator = Paginator(post_list, PAGE_SIZE)
        try:
            page_obj = paginator.page(page)
        except PageNotAnInteger:
            # ??page??????????
            page_obj = paginator.page(1)
        except EmptyPage:
            # ??page?????????????
            page_obj = paginator.page(paginator.num_pages)

        # pagination_data????????????
        pagination_data = PaginationBlogPost(paginator=paginator, page_obj=page_obj,
                                             is_paginated=is_paginated).pagination_data()

        pagination_data['post_list'] = page_obj
        pagination_data['page_obj'] = page_obj
        pagination_data['paginator'] = paginator

        return render(request, 'blog/index.html', pagination_data)
    else:
        # ???????tag????
        return HttpResponseForbidden('Forbidden 403')


# @cache_page(60 * 60)  # ????