Ошибка при использовании 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