Ошибка «страница не найдена» при попытке вернуться на предыдущую страницу после успешного удаления с помощью DeleteView в django

#python #django #web

#python #django #веб

Вопрос:

Итак, я удаляю объект модели с помощью DeleteView и перенаправляю на домашнюю страницу после успешного удаления, работает нормально. Но проблема заключается в том, когда я пытаюсь вернуться на предыдущую страницу после удаления (используя кнопку со стрелкой влево в браузере). Я получаю ошибку «страница не найдена», которая имеет смысл, потому что я пытаюсь вернуться на страницу удаления объекта, который больше не существует. Как мне предотвратить это?

Ответ №1:

Если вы используете для удаления (общие) представления на основе классов, вы можете использовать reverse_lazy для перенаправления после удаления. В случае, если вы используете функциональные представления, вы можете redirect после успешного удаления объекта из базы данных.

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

1. Я использую success_url=reverse_lazy() для перенаправления

2. если вы используете обратный ленивый для перенаправления, то какой смысл возвращаться на страницу. Если это так, сервер должен ответить 404, поскольку сообщение больше не существует.

3. Я понимаю. Мой вопрос в том, идеально ли в этом случае получать ошибку 404?

4. да, если вы запрашиваете базу данных и ничего не получаете, сервер должен вернуть ошибку 404 not found an . вы можете использовать get_object_or_404 специально для отправки 404.