Кнопка должна иметь всплывающую подсказку в одном из шаблонов, но не в других

#python #html #django

Вопрос:

Я включаю кнопку для разных шаблонов (и разных дивов). В одном из этих дивов должна быть подсказка, но не в других. Как я могу это сделать? Я думаю, что могу проверить класс div в кнопке (что-то вроде {% if div_class==»…»%}), но я не знаю, как это сделать. Возможно ли это? Может быть, мне нужно проверить имя шаблона или что-то еще?

first.html

 <div class="single-card__favorite">
  {% include 'button.html' %}
</div>
 

second.html

 <div class="card__footer">
  {% include 'button.html' %}
</div>
 

button.html

 {% load user_filters %}
{% if author|isfavorite:user %}>
  <button class="button button_style_none" name="favorites">
    <span class="icon-favorite icon-favorite_active"></span>
  </button>
  <div class="single-card__favorite-tooltip tooltip">Delete from favorites</div>
{% else %}
  <button class="button button_style_none" name="favorites" data-out>
    <span class="icon-favorite"></span>
  </button>
  <div class="single-card__favorite-tooltip tooltip">Add to favorites</div>
{% endif %}
 

Комментарии:

1. На каком языке это написано? Не похоже на необработанный html.

2. я не думаю, что это чистый html, подумайте о добавлении дополнительных тегов технологий (фреймворков/библиотек/языков), которые вы используете

3. ой, это теги из Django

Ответ №1:

Вы можете передать дополнительный контекст включенному шаблону, используя with предложение (Ссылка: документация). Таким образом, вы можете передать некоторую переменную, которая укажет, что всплывающая подсказка должна быть отображена:

first.html:

 <div class="single-card__favorite">
  {% include 'button.html' with tooltip="yes" %}
</div>
 

button.html:

 {% load user_filters %}
{% if author|isfavorite:user %}>
  <button class="button button_style_none" name="favorites">
    <span class="icon-favorite icon-favorite_active"></span>
  </button>
  {% if tooltip == "yes" %}
    <div class="single-card__favorite-tooltip tooltip">Delete from favorites</div>
  {% endif %}
{% else %}
  <button class="button button_style_none" name="favorites" data-out>
    <span class="icon-favorite"></span>
  </button>
  {% if tooltip == "yes" %}
    <div class="single-card__favorite-tooltip tooltip">Add to favorites</div>
  {% endif %}
{% endif %}
 

Ответ №2:

Если ваши URL-адреса отличаются для каждого шаблона.

Предположим, у вас есть 2 URL-адреса:

 1. domain.com/url1_bro
2. domain.com/url2_bro
 

Тогда вы можете сделать что-то вроде этого:

 {% if 'url1' in request.path %}
   <!--add tooltip html-->
{%else%}
   <!--html button without tooltip-->
{%endif%}
 

Комментарии:

1. Что произойдет в этом случае: «domain.com/url1_bro/url2_bro» или «domain.com/url2_bro/url1_bro»?