@@ -423,6 +423,14 @@ def __init__(
423423
424424 self .setup_routes ()
425425
426+ def get_url_prefix (self ) -> str :
427+ """Get the URL prefix for admin routes, handling root mount path correctly."""
428+ if self .admin_site :
429+ return (
430+ f"/{ self .admin_site .mount_path } " if self .admin_site .mount_path else ""
431+ )
432+ return ""
433+
426434 def _model_is_admin_model (self , model : Type [DeclarativeBase ]) -> bool :
427435 """Check if the given model is one of the admin-specific models."""
428436 admin_model_names = [
@@ -638,15 +646,16 @@ async def form_create_endpoint_inner(
638646
639647 if result :
640648 request .state .crud_result = result
649+ model_list_url = (
650+ f"{ self .get_url_prefix ()} /{ self .model .__name__ } /"
651+ )
641652 if "HX-Request" in request .headers :
642653 return RedirectResponse (
643- url = f"/{ self .admin_site .mount_path } /{ self .model .__name__ } /" ,
644- headers = {
645- "HX-Redirect" : f"/{ self .admin_site .mount_path } /{ self .model .__name__ } /"
646- },
654+ url = model_list_url ,
655+ headers = {"HX-Redirect" : model_list_url },
647656 )
648657 return RedirectResponse (
649- url = f"/ { self . admin_site . mount_path } / { self . model . __name__ } /" ,
658+ url = model_list_url ,
650659 status_code = 303 ,
651660 )
652661
@@ -668,7 +677,7 @@ async def form_create_endpoint_inner(
668677 "error" : error_message ,
669678 "field_errors" : field_errors ,
670679 "field_values" : field_values ,
671- "mount_path" : self .admin_site .mount_path ,
680+ "mount_path" : self .admin_site .mount_path if self . admin_site else "" ,
672681 }
673682
674683 return self .templates .TemplateResponse (
@@ -827,7 +836,7 @@ async def bulk_delete_endpoint_inner(
827836 "current_page" : adjusted_page ,
828837 "rows_per_page" : rows_per_page ,
829838 "primary_key_info" : primary_key_info ,
830- "mount_path" : self .admin_site .mount_path ,
839+ "mount_path" : self .admin_site .mount_path if self . admin_site else "" ,
831840 }
832841
833842 return self .templates .TemplateResponse (
@@ -1204,8 +1213,11 @@ async def form_update_endpoint_inner(
12041213 )
12051214 await db .commit ()
12061215
1216+ model_list_url = (
1217+ f"{ self .get_url_prefix ()} /{ self .model .__name__ } /"
1218+ )
12071219 return RedirectResponse (
1208- url = f"/ { self . admin_site . mount_path } / { self . model . __name__ } /" ,
1220+ url = model_list_url ,
12091221 status_code = 303 ,
12101222 )
12111223
@@ -1232,7 +1244,7 @@ async def form_update_endpoint_inner(
12321244 "error" : error_message ,
12331245 "field_errors" : field_errors ,
12341246 "field_values" : field_values ,
1235- "mount_path" : self .admin_site .mount_path ,
1247+ "mount_path" : self .admin_site .mount_path if self . admin_site else "" ,
12361248 "id" : id ,
12371249 "include_sidebar_and_header" : False ,
12381250 }
0 commit comments