Django模板引擎block块未在页面正常显示问题咨询
问题排查及修复方案
- 第一个问题:sale视图未正确定义且未注册路由
你当前把sale函数写在了IndexView类内部,属于类方法,无法作为独立视图被调用。同时urls.py里完全没有配置sale对应的路由,根本无法触发这个视图返回sale.html。
修复:把sale函数移出IndexView类,变成独立的视图函数,再在urls.py里添加对应路由:
# urls.py 新增路由 path('sale/', views.sale, name='sale'),
之后访问/sale/路径才能拿到继承了index.html、填充了sale块的页面。
第二个问题:根路径路由重复匹配,返回的是未填充block的父模板
你urls.py里配置了两个路径为''的路由,Django路由从上到下匹配,会优先触发第一个IndexView,直接返回父模板index.html,父模板里的sale块本身没有任何默认内容,当然显示为空。
如果你想让根路径直接显示sale页面,就把第一个根路径路由改成指向sale视图,或者在IndexView返回的模板里继承/引入sale的内容。第三个问题:模板继承逻辑使用错误
模板继承的逻辑是:你访问子模板(sale.html)对应的路由时,Django会加载子模板,自动继承父模板(index.html)的内容,再把父模板对应的块替换成子模板里的内容。你现在直接访问父模板的路由,子模板的内容根本不会被加载,块自然是空的。可选校验项
确认你的settings.py里:
INSTALLED_APPS中已经注册了Homepage应用TEMPLATES配置项里的APP_DIRS值为True,保证Django能读到应用下的templates目录里的模板文件
内容的提问来源于stack exchange,提问作者Licrencie
相关产品推荐
相关产品推荐

