База кэширования. html только в Django - PullRequest
0 голосов
/ 13 апреля 2020

Моя база. html шаблон, который распространяется почти на все мои страницы, содержит заголовок, который я никогда не хочу кэшировать, поскольку он содержит имя пользователя из текущий пользователь. У меня есть две страницы, где он продолжает кэшироваться, хотя.

Я попытался добавить {% cache 0 base request.user.username %} для заголовка, но безрезультатно.

Я не хочу добавлять @never_cache, так как я хочу сохранить большую часть DOM в кэше. Есть ли способ добавить декоратор / функциональность never_cache в мою расширенную базу? 1017 *

У меня нет определенного представления для моего базового шаблона, но одна из страниц, которая вызывает у меня проблемы с кэшированием моего заголовка, - это страница просмотра, которая определена ниже.

Представления. py:

@login_required(login_url='login')
def browse(request):
    block_list = None
    user_list = None
    post_list = None
    neighbor_list = None
    main_blocks = Block.objects.filter(name__in=current_blocks).order_by('-date_created')
    user = request.user
    query = request.GET.get("q")
    if query:
        block_list = Block.objects.filter(Q(name__icontains=query) | Q(tags__slug__icontains=query)).distinct()
        neighbor_list = user.neighbors.filter(Q(first_name__icontains=query) | Q(last_name__icontains=query) | Q(username__icontains=query)).distinct()
        user_list = CustomUser.objects.filter(Q(first_name__icontains=query) | Q(last_name__icontains=query) | Q(username__icontains=query)).distinct() 
        post_list = Post.objects.filter(Q(tags__slug__icontains=query) | Q(title__icontains=query)).distinct().order_by('-published')
    if neighbor_list and user_list:
        user_list = neighbor_list | user_list
    context = {'block_list': block_list, 'user_list': user_list, 'post_list': post_list, 'main_blocks': main_blocks}
    return render(request, 'browse.html', context)

(упрощенно) Просмотреть шаблон:

{% extends 'base.html' %}
{% load static %}{% load cache %}
{% block title %} Browse {% endblock title %}

{% block content %}
<div class="browse go-left">
    {% cache 300 browseSearch request.user.username %}
    <div class="search-bar-container">
        <form action="" id="browse-form" method="get">
            <div class="search-line">
                <input type="text" name="q" aria-label="Search" placeholder="Search blocks, users, and posts" class="search-bar" value="{{ request.GET.q }}">
            </div>
            <button type="submit" value="Search">Search</button>
        </form>
    </div>
    {% endcache %}

    {% if request.GET.q is not None %}

    ...code to display search results...

    {% else %}

    {% cache 300 browseIntro request.user.username %}

    ...code to display blocks...

    {% endcache %}

    {% endif %}   

</div>
{% endblock content %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...