如何调整Wagtail博客索引页面的URL并更换首页
解决Wagtail博客索引页迁移到/blog路径的问题
问题原因
直接在urls.py中添加path("blog/", include(wagtail_urls))无法生效,是因为Wagtail的页面路由依赖于后台配置的页面路径(slug),而非单独通过Django的URL路由规则控制。Wagtail会自行管理所有页面的URL映射,单独将wagtail_urls挂载到blog/下,会导致Wagtail期望所有页面路径都以blog/开头,但你的博客索引页原本的路径是空的(作为首页),自然无法匹配。
正确解决步骤
修改Wagtail后台博客索引页的路径
- 登录Wagtail管理后台,找到原博客索引页(原首页)。
- 编辑该页面,在页面设置的URL路径(或slug配置)中,将其路径修改为
blog。保存后,该页面的访问路径就会变成/blog。
调整Django的
urls.py配置
保持首页指向自定义模板页,同时保留Wagtail的路由以处理所有其他页面(包括新路径的博客索引页):from django.urls import path from django.views.generic import TemplateView from wagtail import urls as wagtail_urls urlpatterns = [ # 自定义首页 path("", TemplateView.as_view(template_name="pages/newhomepage.html"), name="newhomepage"), # 让Wagtail处理所有其他页面路由 path("", include(wagtail_urls)), ]
补充说明
- 若你的站点设置中,原博客索引页仍被设为“首页”,无需修改——因为Django的URL路由会优先匹配
path("", TemplateView...),访问根路径时会直接跳转到自定义首页,而Wagtail的页面路由会处理/blog及其他Wagtail管理的页面。 - 修改页面路径后,记得清理浏览器缓存并重启Django服务,避免缓存导致的路径不生效问题。
内容的提问来源于stack exchange,提问作者RobMcC
相关产品推荐
相关产品推荐

