Ошибка при использовании if else в html в приложении django

Добрый день, у меня есть приложение django, в котором есть проблема

на главной странице есть заголовок в базовом html, есть 1 кнопка, но с 2 разными значениями в качестве ссылки

                {% if roleworker %}
                    <li><a href="/addservice/">Add</a></li>
                    {% else %}
                    <li><a href="/addpage/">Add</a></li>
                    {% endif %}

roleworker - это значение в базе данных, вот модель для него


class Role(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='Пользователь')
    roleworker = models.BooleanField(default=False)



когда пользователь открывает index.html он равен True, когда пользователь открывает indexworker.html (здесь посты из рабочего) он равен false, я проверил эту функциональность значения в db для пользователя, оно работает хорошо

когда пользователь открывает какую-то другую страницу, она должна запомнить его значение, для этого существует модель django

это функция, которая проверяет значение roleworker для пользователя

def rolecheck(request, render):
    user = request.user
    role = Role.objects.get(user=user)
    roleworker = role.roleworker
    if roleworker == True:
        print('True')
    elif roleworker == False:
        print('False')
    return render(request, 'base.html', {'roleworker': roleworker})

но в html всегда есть "{% if roleworker %}" (это значит == True) даже когда в админке django он равен False

                {% if roleworker %}
                    <li><a href="/addservice/">Добавить (услуга)</a></li>
                    {% else %}
                    <li><a href="/addpage/">Добавить (статья)</a></li>
                    {% endif %}

Может быть, кто-то знает, как это исправить, я буду очень благодарен, если кто-то может помочь мне, спасибо всем, кто прочитал это

Почему бы вам не изменить его на следующий:

def rolecheck(request, render):
    user = request.user
    role = Role.objects.get(user=user)

    return render(request, 'base.html', {'role': role})

И сделайте это в своем шаблоне:

                  {% if role.roleworker %}
                    <li><a href="/addservice/">Добавить (услуга)</a></li>
                  {% else %}
                    <li><a href="/addpage/">Добавить (статья)</a></li>
                  {% endif %}

Также попробуйте использовать {% url 'add-service' %} вместо жесткого кодирования урлов, это автоматически приведет к ссылке на урл с именем add-service, которое вы можете определить в вашем urls.py

Вернуться на верх