Вы в основном делаете то же самое, что и метод 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>