#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 имеется многоуровневая промежуточная обработка запросов, которая позволяет обрабатывать запрос различных стадиях.
Комментариев нет:
Отправить комментарий