Django模板中extends与block功能失效问题求助
Django Templates extends和block功能失效的解决办法
问题代码与文件结构
父模板template.html
<!DOCTYPE html> <html> <body> {% block theTitle %} {% endblock %} </body> </html>
子模板textComponent.html
{% extends 'templates/template.html' %} {% block theTitle %} <div>what is going on?</div> {% endblock %}
文件结构
- _templates
- template.html
- textComponent.html
解决步骤
修正extends路径引用
子模板中extends的路径错误。Django会自动在配置的模板目录下查找文件,你的模板都在_templates目录内,因此不需要额外添加templates/前缀,直接引用父模板文件名即可:{% extends 'template.html' %} {% block theTitle %} <div>what is going on?</div> {% endblock %}确认模板目录配置
打开项目的settings.py,找到TEMPLATES配置项,确保_templates目录已被添加到DIRS列表中,示例如下:TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / '_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', ], }, }, ]这里的
BASE_DIR是项目根目录,确保_templates的路径和实际目录完全匹配。检查文件名与目录拼写
确认目录名为_templates而非其他拼写,同时模板文件名没有多余下划线(比如若实际文件名是__template.html,需改为template.html,否则Django无法识别)。规范模板标签格式
保证extends标签单独占一行,避免和其他标签挤在同一行导致解析错误,这是Django模板解析的常见注意事项。
内容的提问来源于stack exchange,提问作者Martin Arreola
相关产品推荐
相关产品推荐

