Представление на основе классов Django - DeleteView - Как отключить требование подтверждения - PullRequest
4 голосов
/ 03 марта 2012

Я переключаюсь на классовые представления.Я также использую JavaScript для подтверждения удаления на стороне клиента.Для Django DeleteView требуется шаблон подтверждения удаления, который мне безразличен.

Есть ли какой-либо простой способ отключить подтверждение любого типа удалений в Django?

class EntryDeleteView(DeleteView):
    model = Entry
    success_url = reverse_lazy('entry_list')   # go back to the list on successful del
    template_name = 'profiles/entry_list.html' # go back to the list on successful del

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(EntryDeleteView, self).dispatch(*args, **kwargs)

Ответы [ 2 ]

7 голосов
/ 03 марта 2012

Вы должны сделать запрос POST со стороны клиента (с помощью AJAX или POSTing формы).Это потому, что если вы разрешите удалить что-либо с помощью GET, ваш сервис будет уязвим для CSRF.Кто-то отправит вашему администратору письмо по электронной почте или как-то еще, и у вас будут проблемы.

1 голос
/ 03 марта 2012

DeleteView отображает страницу подтверждения на GET и удаляет объект, если вы используете POST или DELETE. Если ваш JS делает POST URL после подтверждения, он должен работать так, как вы хотите.

...