mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 03:31:08 -05:00
Improve error handling for park and area detail views
Update ParkDetailView and ParkAreaDetailView to raise Http404 exceptions instead of ObjectDoesNotExist for improved HTTP error handling. Replit-Commit-Author: Agent Replit-Commit-Session-Id: c446bc9e-66df-438c-a86c-f53e6da13649 Replit-Commit-Checkpoint-Type: intermediate_checkpoint
This commit is contained in:
4
.replit
4
.replit
@@ -54,10 +54,6 @@ outputType = "webview"
|
|||||||
localPort = 5000
|
localPort = 5000
|
||||||
externalPort = 80
|
externalPort = 80
|
||||||
|
|
||||||
[[ports]]
|
|
||||||
localPort = 35423
|
|
||||||
externalPort = 3002
|
|
||||||
|
|
||||||
[[ports]]
|
[[ports]]
|
||||||
localPort = 41923
|
localPort = 41923
|
||||||
externalPort = 3000
|
externalPort = 3000
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ from django.http import (
|
|||||||
HttpResponse,
|
HttpResponse,
|
||||||
HttpRequest,
|
HttpRequest,
|
||||||
JsonResponse,
|
JsonResponse,
|
||||||
|
Http404,
|
||||||
)
|
)
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
@@ -818,9 +819,12 @@ class ParkDetailView(
|
|||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
slug = self.kwargs.get(self.slug_url_kwarg)
|
slug = self.kwargs.get(self.slug_url_kwarg)
|
||||||
if slug is None:
|
if slug is None:
|
||||||
raise ObjectDoesNotExist("No slug provided")
|
raise Http404("No slug provided")
|
||||||
|
try:
|
||||||
park, _ = Park.get_by_slug(slug)
|
park, _ = Park.get_by_slug(slug)
|
||||||
return park
|
return park
|
||||||
|
except Park.DoesNotExist:
|
||||||
|
raise Http404("Park not found")
|
||||||
|
|
||||||
def get_queryset(self) -> QuerySet[Park]:
|
def get_queryset(self) -> QuerySet[Park]:
|
||||||
return cast(
|
return cast(
|
||||||
@@ -870,11 +874,15 @@ class ParkAreaDetailView(
|
|||||||
park_slug = self.kwargs.get("park_slug")
|
park_slug = self.kwargs.get("park_slug")
|
||||||
area_slug = self.kwargs.get("area_slug")
|
area_slug = self.kwargs.get("area_slug")
|
||||||
if park_slug is None or area_slug is None:
|
if park_slug is None or area_slug is None:
|
||||||
raise ObjectDoesNotExist("Missing slug")
|
raise Http404("Missing slug")
|
||||||
area, _ = ParkArea.get_by_slug(area_slug)
|
try:
|
||||||
if area.park.slug != park_slug:
|
# Find the park first
|
||||||
raise ObjectDoesNotExist("Park slug doesn't match")
|
park = Park.objects.get(slug=park_slug)
|
||||||
|
# Then find the area within that park
|
||||||
|
area = ParkArea.objects.get(park=park, slug=area_slug)
|
||||||
return area
|
return area
|
||||||
|
except (Park.DoesNotExist, ParkArea.DoesNotExist):
|
||||||
|
raise Http404("Park or area not found")
|
||||||
|
|
||||||
def get_context_data(self, **kwargs: Any) -> dict[str, Any]:
|
def get_context_data(self, **kwargs: Any) -> dict[str, Any]:
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
|
|||||||
Reference in New Issue
Block a user