Django模板中{%block%}标签未渲染,原因是直接以file://协议打开HTML文件,没有经过Django服务器处理,模板引擎未被激活。正确做法:视图函数调用render()渲染模板,配置URL路由并包含应用路由,启动runserver通过HTTP地址访问,即可正确解析模板语法。
Django模板{% block %}未渲染?原因与正确配置
作者:技术拾光
时间:2026-07-15
浏览:494
文章目录
当您在浏览器中看到`{% block %}`等标签以原始文本形式显示时,说明Django模板引擎并未被激活。问题的根源通常很简单——HTML文件被直接双击打开,而不是通过Django开发服务器访问。正确的做法是:必须通过`render()`视图函数处理,并由`runserver`提供响应。
需要特别强调:Django模板文件绝对不能直接在浏览器中以`file://`协议打开。无论是双击文件还是拖入浏览器,浏览器都会将其视为纯静态HTML,完全忽略Django模板语法。结果就是,您会看到`{% block content %}{% endblock %}`等原始代码。
正确的操作流程
-
视图函数必须调用render()
render()是Django将上下文数据注入模板、执行模板引擎解析的核心函数,这一点必须保证。在views.py中,应如下编写:# views.py from django.shortcuts import render def frontpage(request): return render(request, 'core/frontpage.html') # 确保触发模板渲染 -
URL路由必须正确指向该视图
在对应应用的urls.py中正确定义路径,并确保已包含进主路由:# core/urls.py from django.urls import path from . import views urlpatterns = [ path('frontpage/', views.frontpage, name='frontpage'), # 注意末尾斜杠 ]然后在项目主urls.py中包含该应用路由:
# myproject/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('core.urls')), # 包含core应用路由 ] -
启动Django开发服务器,通过HTTP地址访问
终端执行:python manage.py runserver
然后在浏览器中访问:http://127.0.0.1:8000/frontpage/,而不是直接打开文件。
-
检查模板继承结构是否完整
虽然这不会直接导致显示原始代码,但结构不完整会导致页面空白或布局异常。建议补全基础结构:{% block title %}{% endblock %}Djangochat Djangochat
{% block content %}默认内容可选{% endblock %} {% extends 'core/base.html' %} {% block title %}Welcome | {% endblock %} {% block content %}Welcome to the Front Page!
This content is rendered inside the base layout.
{% endblock %}常见误区提醒
- 不要省略render()。使用HttpResponse(open(...).read())或HttpResponse(html_string)不会触发模板引擎,这一点需要特别注意。
- 不要遗漏path()的include()配置,否则URL无法匹配到视图。
- 模板路径必须与TEMPLATES['DIRS']和应用结构一致,默认templates/下按应用名分目录。
- 推荐开启DEBUG=True(开发环境默认),便于捕获模板错误,如TemplateDoesNotExist。
只要严格遵循这个链路,Django模板语法就会被正确解析,{% block %}、{% if %}、{{ variable }}等标签都会生效,不再出现显示原始代码的问题。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章