Не перенаправлять, а показывать ошибку в шаблоне verify_delete, если во время вызова DeleteView произошла ошибка

0
задан JohnDizzle 15 January 2019 в 09:26
поделиться

1 ответ

Вы в основном делаете то же самое, что и метод get() класса, и просто добавляете некоторую информацию об ошибке в контекст.

def delete(self, request, *args, **kwargs):
    self.object = self.get_object()
    success_url = self.get_success_url()
    try:
        self.object.delete()
        # Redirect to success_url
    except ProtectedError:
        context = self.get_context_data(
            object=self.object,
            error='Object is protected'
        )
        return self.render_to_response(context)
    return HttpResponseRedirect(success_url)

Посетите https://ccbv.co.uk , чтобы получить лучшее представление о том, как представления на основе классов Django работают под капотом.

Затем вы должны отобразить ошибку в вашем шаблоне. Вот пример с шаблоном из документов Django:

<form method="post">{% csrf_token %}
    {% if error }}<p class="error">{{ error }}</p>{% endif %}
    <p>Are you sure you want to delete "{{ object }}"?</p>
    <input type="submit" value="Confirm">
</form>
0
ответ дан Daniel Hepper 15 January 2019 в 09:26
поделиться
Другие вопросы по тегам:

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