Моя база. 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 %}