Django中{% include %}标签未生效,直接显示在浏览器求助
Django模板{% include %}标签未生效问题解决
问题描述
尝试将导航栏拆分到独立的sidebar.html文件中,通过{% include 'sidebar.html' %}标签引入到base.html模板内,但该标签直接以文本形式显示在浏览器中,未按预期渲染出导航栏内容。
项目目录结构
|-project |-static |-css |-js |-templates |-base.html |-sidebar.html |- static |- ... |-app0 |-templates |-home.html |-... |-manage.py
相关模板代码
project/templates/base.html
<html> <head> {% load static %} <link rel="stylesheet" href="{% static 'css/style.css' %}"> <title>Profile</title> </head> <body> {% include 'sidebar.html' %} {% block content %} {% endblock content %} </body> </html>
project/templates/sidebar.html
<div class="sidebar"> <a href="/"> Home</a> <h3>Headline0</h3> <a href="/test0">Test0</a> <h3>Headline 1</h3> <a href="/test1">Test1</a> </div>
app0/templates/home.html
{% extends "base.html" %} {% load static %} {% block content %} Hi <span id="name"></span> <div id="counter"></div> <script src="{% static 'js/index.js' %}" charset="UTF-8"></script> {% endblock %}
浏览器现象
浏览器页面中直接显示{% include 'sidebar.html' %}这段文本,未渲染出sidebar中的导航栏内容。
解决思路
导致该问题的常见原因及排查方向:
- 检查Django模板配置:确保项目
settings.py中的TEMPLATES配置里,DIRS包含了project/templates目录,且APP_DIRS设置为True,示例配置如下:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'project/templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
- 核对模板文件名:确认
sidebar.html文件名拼写正确,且存放路径在Django的模板查找范围内。 - 验证视图渲染逻辑:确保app0中对应的视图函数返回的是
home.html模板,且模板继承关系正确。
用户反馈
评论里的方案是对的,感谢解答,抱歉问了这么基础的问题。
内容的提问来源于Stack Exchange,提问作者MaTok
相关产品推荐
相关产品推荐

