@7a-666

Как в DetailView добавить метод post?

Есть вюха с классом DetailView если отправить на неё форму с методом post то ошибка HTTP ERROR 405 насколько я понял в классе DetailView нет метода post в документации прочитал про http_method_names и определил его http_method_names = ['get', 'post']
та же ошибка не хочу использовать для фильтров метод get так как url строка становиться страшной
можно ли как-то определить метод post в данной вюхе с классом DetailView ?
  • Вопрос задан
  • 758 просмотров
Решения вопроса 1
@i_am_duderje
в первом ответе верно сказали что нужно реализовать метод пост у вашей вьюхи унаследованной от DetailView, где то так:
class BlogDetailView(DetailView):
 template_name= 'blog-info.html'
 model = Blog
 def post(self, request, *args, **kwargs):
   # тут ваши действия

Все http методы должны возвращать объект HttpResponse
Конечно же бывают случаи, когда удобнее обработать POST запросы в DetailView представлении.
Например, подписаться на блог при его просмотре. Отображение блога осуществить через DetailView, а при клике на кнопку "подписаться" отправлять форму с POST запросом на эту же страницу просмотра блога. И в DetailView вашего блога реализовать метод post(), который добавит текущему юзеру подписку на этот блог.
и кстати, http_method_names надо использовать когда хотите настроить специфичные методы. Стандартные методы HTTP уже прописаны в http_method_names по умолчанию.
Но фильтрация делается конечно через GET.
В чем не прав - поправьте :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы