如何在同一Django应用中引入多个urls.py?解决htmx路由404错误
解决Django+htmx的URL 404问题
问题根源
你当前的URL配置拼接后和请求路径完全不匹配:
my_app/urls.py中父路径是path("htmxFunctions", include(...)),没有末尾斜杠htmx_urls.py中子路径是path("test", ...)- 两者拼接后有效URL是
/htmxFunctionstest,但你请求的是/htmxFunctions/test/,自然返回404。
修复步骤
1. 修正父路径的URL配置
修改my_app/urls.py中的htmx路由,给父路径加上末尾斜杠:
# my_app/urls.py urlpatterns = [ path("", views.index, name="index"), ... # htmx-funktionen path("htmxFunctions/", include("my_app.htmx.htmx_urls")), # 新增末尾斜杠 ]
2. 调整子路径(按需处理斜杠)
此时子路径path("test", views.test, name="test")对应的有效URL是/htmxFunctions/test。如果你的htmx请求是hx-post="/htmxFunctions/test/",Django默认开启的APPEND_SLASH设置会自动重定向到不带斜杠的版本(不影响功能);也可以直接给子路径加上末尾斜杠:
# my_app/htmx/htmx_urls.py urlpatterns = [ path("test/", views.test, name="test"), # 新增末尾斜杠 path("", views.index, name="htmx_index"), # 修正重复的name属性,避免反向解析冲突 ]
3. 修正重复的URL名称
注意你的htmx_urls.py里两个path都用了name="test",这会导致URL反向解析时出现冲突,必须给它们设置不同的名称,比如把第二个改成name="htmx_index"。
验证
修改完成后,hx-post="/htmxFunctions/test/"或者hx-post="/htmxFunctions/test"都能正常匹配到对应的视图函数。
内容的提问来源于stack exchange,提问作者mathis_dukatz
相关产品推荐
相关产品推荐

