Неправильно выполняется условие {% if not request.user.is_authenticated %}

Необходимо чтобы для авторизованного пользователя отображалась кнопка "Профиль", а для неавторизованного кнопка "Войти"

base.html

{% if not request.user.is_authenticated %}
                <div class="auth__div">
                    <a class="a_login" href="{% url 'users:login' %}">
                        <button class="auth__btn">
                            <span class="auth__enter">Войти</span>
                        </button>
                    </a>
                </div>
{% else %}
                <div class="profile">
                    <a class="a_login" href="{% url 'users:profile' %}">
                        <button class="auth__btn">
                            <span class="profile__span">Профиль</span>
                        </button>
                    </a>
                </div>
{% endif %}

Проблема в том, что и у авторизованного пользователя, и у неавторизованного отображается "Войти", а "Профиль" не отображается ни в каком случае. Если убрать request и оставить {% if not user.is_authenticated %} ничего не поменяется.

UPD: views.py:

def registration(request):
    if request.method == 'POST':
        form = RegistrationUserForm(data=request.POST)
        if form.is_valid():
                form.save()
                user = form.instance
                auth.login(request, user)
                return HttpResponseRedirect(reverse('home'))
    else:
        form = RegistrationUserForm()
    context = {
        'title': 'Home - Регистрация',
        'form': form
    }
    return render(request, 'users/registration.html', context)



def login(request):
    if request.method == 'POST':
        form = LoginUserForm(data=request.POST)
        if form.is_valid():
            username = request.POST['username']
            password = request.POST['password']
            user = auth.authenticate(username=username, password=password)
            if user:
                auth.login(request, user)
                return HttpResponseRedirect(reverse('home'))
    else:
        form = LoginUserForm()
    context = {
            'title': 'Home - Авторизация',
            'form': form
        }
    return render(request, 'users/login.html', context)


def profile(request):
    p = render_to_string('users/profile.html')
    return HttpResponse(p)  

def logout(request):
    auth.logout(request)
    return redirect(reverse('home'))

Сам нашел в чем была ошибка и, как обычно, все элементарно:

в views.py основного приложения было следующее:

def index(request):
  p = render_to_string('base.html')
  return HttpResponse(p)

Собственно это была изначальная заглушка через которую не передается context. Для решения проблемы было достаточно поменять функцию с использованием render вместо HttpResponse. Таким образом получается:

def index(request):
    return render(request, 'base.html')
Вернуться на верх