""" URL configuration for Parks API following Django styleguide patterns. """ from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import ( ParkListApi, ParkDetailApi, ParkCreateApi, ParkUpdateApi, ParkDeleteApi, ParkApi, ) app_name = "parks_api" # Option 1: Separate ViewSets for each operation (more explicit) router_separate = DefaultRouter() router_separate.register(r"list", ParkListApi, basename="park-list") router_separate.register(r"detail", ParkDetailApi, basename="park-detail") router_separate.register(r"create", ParkCreateApi, basename="park-create") router_separate.register(r"update", ParkUpdateApi, basename="park-update") router_separate.register(r"delete", ParkDeleteApi, basename="park-delete") # Option 2: Unified ViewSet (more conventional DRF) router_unified = DefaultRouter() router_unified.register(r"parks", ParkApi, basename="park") # Use unified approach for cleaner URLs urlpatterns = [ path("v1/", include(router_unified.urls)), ] # Alternative manual URL patterns for more control urlpatterns_manual = [ # List and create path( "v1/parks/", ParkApi.as_view({"get": "list", "post": "create"}), name="park-list", ), # Stats endpoint path("v1/parks/stats/", ParkApi.as_view({"get": "stats"}), name="park-stats"), # Detail operations path( "v1/parks//", ParkApi.as_view( { "get": "retrieve", "put": "update", "patch": "partial_update", "delete": "destroy", } ), name="park-detail", ), # Park reviews path( "v1/parks//reviews/", ParkApi.as_view({"get": "reviews"}), name="park-reviews", ), ]