Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Кнопки изменения рейтинга на ajax

#jquery #ajax #django


Нужно реализовать ajax-запросы голосования "за" и "против" к комментариям, по аналогии
как на Баше: т.е. при нажатии на кнопку не происходит перезагрузка страницы, а только
меняется рейтинг. И как это событие обработать в джанговском представлении? Спасибо.    


Ответы

Ответ 1



В общем сделал так: навесил на кнопки функцию: function voite(id, action){ $.post("/quote/", {comment_id: id, comment_action: action}); } А на адрес '/quote/' навесил обработчик во вьюхе, обрабатывающий пост-запрос. Если нужно(интересно) - могу привести более детальный код. Дополнение. Скажу заранее, что обработчик лежит в отдельном приложении и обрабатывает страницу '/quote/', т.е. в urls.py есть такая строчка: (r'^quote/$', 'ajax.views.quote'), где 'ajax.views.quote' - путь к обработчику. Вот сам текст обработчика: def quote(request): message = "This is a technic page" if request.method == 'POST': if 'comment_id' in request.POST and 'comment_action' in request.POST: #обрабатываем запрос, повышаем/понижаем рейтинг и т.д. return HttpResponse(message) В обработчике проверяем метод, далее извлекаем из запроса (request) параметры и делай все что нам нужно.

Ответ 2



Посмотрите django-voting.

Ответ 3



Для реализации данного функционала, я бы посоветовал Вам использовать шаблоны. В шаблоне вы задаете класс и/или id элемента, создаете кнопку, обработчик которой, находящийся в JavsScript-коде, меняет состояние нужного элемента по его классу или id. Если страница не требует общения с сервером, можно и вовсе не отправлять запрос. На сколько мне известно в Django имеется многоуровневая промежуточная обработка запросов, которая позволяет обрабатывать запрос различных стадиях.

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

Отправить комментарий