Пытаюсь прописать условие для отображения той или иной кнопки в html - помогите, пожалуйста

Рейтинг: 1Ответов: 0Опубликовано: 16.02.2023

Всем доброго времени суток! Наверняка тут что - то простое, но я уже всяко писала и не понимаю уже - как тут нужно. Имеется шаблон навигации для отображения страниц html.

{% load static %}

{% if request.user.is_authenticated %}
<div id="current_link">    
<ul class="top-menu" > 
    <li><a href="{% url 'questionnaire:home' %}">Главная</a></li>
    <li><a href="{% url 'about:project' %}">О проекте</a></li>
    <li><a href="{% url 'about:tech' %}">Технологии</a></li>

    {% for questionnaire in page_obj %}
        {% if request.user.id == questionnaire.user.id %}
            <li><a href="{% url 'questionnaire:questionnaire_edit' user.id %}">Редактировать анкету</a></li>
            {% if request.user.id != questionnaire.user.id %}
            <li><a href="{% url 'questionnaire:questionnaire_create' %}">Опубликовать анкету</a></li>
            {% endif %}
        {% endif %}
    {% endfor %}
    
    <li><a href="{% url 'users:reset_password' %}">Сбросить пароль</a></li>
    <li><a href="{% url 'users:logout' %}">Выход</a></li>
    <span style="color:green">Ваш ник: {{ user.username }}</span>

    {% else %}
<div id="current_link">
<ul class="top-menu">
    <li><a href="{% url 'users:signup' %}">Регистрация</a></li>
    <li><a href="{% url 'users:login' %}">Войти</a></li>
    <li><a href="{% url 'about:project' %}">О проекте</a></li>
    <li><a href="{% url 'about:tech' %}">Технологии</a></li>
    {% endif %} 
</ul>
</div>

Собственно блок кода с кнопкой "Опубликовать анкету" - просто не работает. Кнопка "Редактировать" отображается как надо.

У меня есть модель Questionnaire(в ней анкеты пользователей) и User(django.contrib.auth). Юзер регистрируется на сайте - заходит на главную страницу - и если у него нет анкеты должна отобразиться кнопка "Опубликовать", если есть анкета то "Редактировать".

юзер с анкетой введите сюда описание изображения

юзер без анкеты введите сюда описание изображения

Подскажите пожалуйста куда смотреть, я уже запуталась. Может что то лишнее у меня, или что я не учла? Заранее благодарствую за любой комментарий!

Если пишу так

    {% for questionnaire in page_obj %}
        {% if  questionnaire.user == request.user %}
            <li><a href="{% url 'questionnaire:questionnaire_edit' user.id %}">Редактировать анкету</a></li>
            {% else %}
            <li><a href="{% url 'questionnaire:questionnaire_create' %}">Опубликовать анкету</a></li>
        {% endif %}
    {% endfor %}

Тогда условие отрабатывает, но дублируются кнопки..

Юзер с анкетой введите сюда описание изображения Юзер без анкеты введите сюда описание изображения

Как убрать тогда дублирование кнопок, может подскажет кто-нибудь?

Если убираю {% for questionnaire in page_obj %} .... {% endfor %} - тогда отображается кнопка Опубликовать для всех... т.е. первое условие не отрабатывает...

Условие исправлено на такое:

 {% if request.user.questionnaire %}
    <li><a href="{% url 'questionnaire:questionnaire_edit' user.id %}">Редактировать анкету</a></li>
{% else %}
    <li><a href="{% url 'questionnaire:questionnaire_create' %}">Опубликовать анкету</a></li>
{% endif %}

Т.е. если у текущего юзера уже есть экземпляр модели questionnaire то показываем одну кнопку, если нет - другую ) Оказалось просто и логично!

Ответы

Ответов пока нет.