Как создать фильтр кнопок в Django, не перезагружая страницу? - PullRequest
0 голосов
/ 01 мая 2019

Я получаю список, содержащий книги, я должен сделать кнопку фильтра, чтобы классифицировать его, Прямо сейчас я передаю аргумент в ссылке "? Filter = 2 " с каждым нажатием кнопки. Но это требует перезагрузки страницы.

    In the get function 
    self.book_type = request.GET.get("book_type")

    in the get_queryset
    return qs.filter(book_filter=self.book_type)

    HTML
    Simply redirecting to the page with a query added to the link 
    containing ?book_type=" anything"

1 Ответ

0 голосов
/ 01 мая 2019

Вы должны иметь вид, подобный следующему:

from django.http import JsonResponse

def get_books(request):
    book_type = request.GET.get("book_type")
    res = qs.filter(book_filter=self.book_type)
    return JsonResponse({"data": res})

Затем создайте URL в вашем шаблоне следующим образом (он создает переменную javascript, содержащую URL для get_books):

<script> book_get_url = "{% url 'route_name_to_get_books_from_urls.py' %}";</script>

Теперь вы можете использовать переменную book_get_url в вашем JavaScript следующим образом:

$.ajax({
    url: book_get_url,
    type: "GET",
    "data": {
         book_type: here is your book_type as a number
    },
    success: function (data) {
        //here you have your books in `data.data` in json fromat
    }
)};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...