Как добавить компонент URL в текущий URL с помощью кнопки HTML? (Джанго 2.1) - PullRequest
0 голосов
/ 03 июля 2019

У меня есть кнопка HTML, которая должна сортировать результаты поиска по алфавиту.

Код HTML кнопки:

<a href="?a-z=True" type="button" class="btn btn-outline-{% if 'a-z' in request.GET %}success{% else %}secondary{% endif %}">A-Z</a>

views.py:

def query_search(request):
    articles = cross_currents.objects.all()
    search_term = ''
    if 'keyword' in request.GET:
        search_term = request.GET['keyword']
        articles = articles.annotate(similarity=Greatest(TrigramSimilarity('Title', search_term), TrigramSimilarity('Content', search_term))).filter(similarity__gte=0.03).order_by('-similarity')
    if request.GET.get('a-z') == 'True':
        articles = articles.order_by('Title')

В настоящее время URL содержит ключевые слова, которые ищет пользователь.Например, если пользователь ищет «сыр», URL будет search/?keyword=cheese.Когда я нажимаю кнопку сортировки, URL становится search/?a-z=True и теряет ключевое слово, что означает, что механизм сортировки не сортирует результаты поиска по ключевому слову.Я думаю, мне нужно, чтобы URL содержал как ключевое слово, так и ?a-z=True, чтобы механизм сортировки работал с результатами поиска.Как я могу это сделать?

1 Ответ

0 голосов
/ 03 июля 2019

Я думаю, что это не только для Django, вы можете использовать javascript для этого:

Добавить функцию, которая получит текущий URL, выполнить функцию сортировки и вызвать эту функцию через onclick.Затем добавьте необходимый параметр.

<a href="#"  onclick="sort('a-z=True')"type="button" class="btn btn-outline-{% if 'a-z' in request.GET %}success{% else %}secondary{% endif %}">A-Z</a>

Затем в своей части js вы можете проверить, что URL содержит параметр keyword, если нет, просто добавьте параметр сортировки.

function sort(foo) {
    let url = window.location.href;

    // check if current url includes a "keyword" param else add the sort as param
    if(url.includes("?") && url.includes("keyword")) window.location.href = url + "&" + foo;
    else window.location.href = url + "?" + foo;
}

Это просто идея и может не сработать, так как я никогда не пытался запустить это.

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