@@ -423,6 +423,14 @@ def __init__(
423
423
424
424
self .setup_routes ()
425
425
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
+
426
434
def _model_is_admin_model (self , model : Type [DeclarativeBase ]) -> bool :
427
435
"""Check if the given model is one of the admin-specific models."""
428
436
admin_model_names = [
@@ -638,15 +646,16 @@ async def form_create_endpoint_inner(
638
646
639
647
if result :
640
648
request .state .crud_result = result
649
+ model_list_url = (
650
+ f"{ self .get_url_prefix ()} /{ self .model .__name__ } /"
651
+ )
641
652
if "HX-Request" in request .headers :
642
653
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 },
647
656
)
648
657
return RedirectResponse (
649
- url = f"/ { self . admin_site . mount_path } / { self . model . __name__ } /" ,
658
+ url = model_list_url ,
650
659
status_code = 303 ,
651
660
)
652
661
@@ -668,7 +677,7 @@ async def form_create_endpoint_inner(
668
677
"error" : error_message ,
669
678
"field_errors" : field_errors ,
670
679
"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 "" ,
672
681
}
673
682
674
683
return self .templates .TemplateResponse (
@@ -827,7 +836,7 @@ async def bulk_delete_endpoint_inner(
827
836
"current_page" : adjusted_page ,
828
837
"rows_per_page" : rows_per_page ,
829
838
"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 "" ,
831
840
}
832
841
833
842
return self .templates .TemplateResponse (
@@ -1204,8 +1213,11 @@ async def form_update_endpoint_inner(
1204
1213
)
1205
1214
await db .commit ()
1206
1215
1216
+ model_list_url = (
1217
+ f"{ self .get_url_prefix ()} /{ self .model .__name__ } /"
1218
+ )
1207
1219
return RedirectResponse (
1208
- url = f"/ { self . admin_site . mount_path } / { self . model . __name__ } /" ,
1220
+ url = model_list_url ,
1209
1221
status_code = 303 ,
1210
1222
)
1211
1223
@@ -1232,7 +1244,7 @@ async def form_update_endpoint_inner(
1232
1244
"error" : error_message ,
1233
1245
"field_errors" : field_errors ,
1234
1246
"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 "" ,
1236
1248
"id" : id ,
1237
1249
"include_sidebar_and_header" : False ,
1238
1250
}
0 commit comments