1.
# views.py
from django.shortcuts import render
def error_403(request, exception):
return render(request, '403.html', status=403)
# urls.py
from django.urls import path, include
from .views import error_403
urlpatterns = [
# your other paths
]
handler403 = 'my_holiday.destination.views.error_403'
2.
Forbidden (403)
{{ message }}
3.
from django.http import HttpResponseForbidden
@method_decorator(login_required, name='dispatch')
class PlaceEditView(views.UpdateView):
queryset = Place.objects.all()
template_name = "destination/place_edit.html"
form_class = PlaceEditForm
success_url = reverse_lazy('travelogue_view')
def dispatch(self, request, *args, **kwargs):
obj = self.get_object()
if obj.user != self.request.user:
return HttpResponseForbidden("You do not have permission to edit this place.")
return super().dispatch(request, *args, **kwargs)
@method_decorator(login_required, name='dispatch')
class PlaceDeleteView(views.DeleteView):
queryset = Place.objects.all()
template_name = "destination/place_delete.html"
success_url = reverse_lazy('travelogue_view')
def dispatch(self, request, *args, **kwargs):
obj = self.get_object()
if obj.user != self.request.user:
return HttpResponseForbidden("You do not have permission to delete this place.")
return super().dispatch(request, *args, **kwargs)