Django继承base.html后子页面内容无法显示的问题求助
问题原因与解决方法
问题原因
你在dashboard.html里定义了content块,但作为父模板的base.html中没有对应的content块定义。Django模板继承的逻辑是:子模板的块内容只会替换父模板中同名的块,父模板里不存在的块,子模板的内容无法被渲染输出。
解决步骤
修改base.html,在<body>内部、nav块结束后添加content块的占位,具体如下:
修改后的base.html关键代码片段:
{% block nav %} <div class="nav-container"> <img src="{% static 'levelstatic/assets/coderalogo.svg' %}" style="margin: 0 auto; width: 80%; margin-bottom: 25px;" alt="CODERA"> <div class="nav-links"> <div class="nav-link nav-active"> <img src="{% static '/dashimages/learn.svg' %}"> <a>LEARN</a> </div> <div class="nav-link"> <img src="{% static '/dashimages/review.svg' %}"> <a>REVIEW</a> </div> <div class="nav-link"> <img src="{% static '/dashimages/progress.svg' %}"> <a>PROGRESS</a> </div> <div class="nav-link"> <img src="{% static '/dashimages/compete.svg' %}"> <a>COMPETE</a> </div> </div> </div> {% endblock %} <!-- 新增content块占位 --> {% block content %}{% endblock %} </body>
完成修改后,dashboard.html中的{% block content %}内容就会被插入到这个新增的占位位置,页面就能正常显示<h1>Hello World!</h1>了。
补充说明
dashboard.html的写法是正确的,只要父模板添加了对应的content块,子模板的内容就会被正确渲染。
内容的提问来源于stack exchange,提问作者jahantaila
相关产品推荐
相关产品推荐

