Какой самый СУХОЙ способ отключить ссылку на текущую страницу? - PullRequest
0 голосов
/ 13 июня 2018

В моем веб-приложении Django я хочу позволить пользователям сортировать объекты модели по различным параметрам, что достигается с помощью параметров URL, которые сообщают представлению, какие элементы должны быть загружены.Вот фрагмент кода Jinja / HTML из шаблона:

<p><b><span class="text-info">sort by:</span></b>
                    <a href="{% url 'artists' %}">latest_release</a> |
                    <a href="{% url 'artists'%}?sorted_by=name">alphabetically</a> |
                <a href="{% url 'artists'%}?sorted_by=next_release">soonest release</a></p>

Если пользователь уже сортирует по latest_release (первая ссылка), я хочу удалить ссылку из него.Тем не менее, я не могу найти способ сделать это сухим способом.

1 Ответ

0 голосов
/ 13 июня 2018

Вы можете определить dict в своем представлении с помощью имени аргумента - отображение отображаемого имени:

mapping = {'': 'latest_release', 'name': 'alphabetically', 'next_release': 'soonest release'}

и передать его в контекст:

context['mapping'] = mapping 

Теперь в шаблоне итерируйте по каждой паре изуказывать и показывать ссылку только в том случае, если sorted_by значение не равно ключу:

{% for k, v in mapping.items %}
    {% if request.GET.sorted_by|default:"" != k %} <a href="{% url 'artists' %}?sorted_by={{ k }}">{{ v }}</a> |{% endif %}
{% endfor %}

Чтобы удалить | разделитель после последней ссылки, вы можете проверить статус forloop.last.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...