You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板语言未被HTML渲染,标签原样输出求助

问题原因及修复方案

兄弟,你的问题根源一眼就能看出来:模板标签里多余的空格让Django根本识别不出这些是模板标签,所以才会把{ % for... %}这类内容原样输出。Django对模板标签的格式有严格要求,必须是{% 标签内容 %}的形式——注意{%和后面的内容之间不能有空格,%}前面也不能加多余空格。

我帮你梳理下具体的错误点和修正方法:

  1. 标签格式错误:所有带空格的标签都要修正,比如:

    • 把{ % verbatim % }改成{% verbatim %}
    • 把{ % if num is not None %}改成{% if num is not None %}
    • 把{ % for some_item in some_list % }改成{% for some_item in some_list %}
      所有{%和%}内部的多余空格都要删掉,保持标签的紧凑格式。
  2. 过滤器语法错误:你写的{% if some_item | divisibleby = "2" %}是错的,正确写法是{% if some_item|divisibleby:2 %}:

    • 变量和过滤器之间不能有空格
    • 过滤器和参数之间用冒号:分隔,不是等号
    • 数字参数不需要加引号
  3. 闭合标签错误:循环里的{ % % }是无效的,应该用{% endif %}来闭合if判断。

  4. 循环后变量失效问题:最后一行<p>Some item is {{ some_item }}</p>里的some_item会没有值,因为for循环结束后,这个变量就不在上下文里了,如果要显示循环内的内容,得在循环块里处理。

下面是修正后的完整模板代码:

{% extends "base.html" %} 
{% block content %} 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
</head> 
<body> 
<h1>Hello World!</h1> 
<p> This is <code>{% verbatim %}{{ html_var }}{% endverbatim %}</code> html coming through </p> 
<p>{% if num is not None %} Random number is: {{ num }} {% endif %}</p> 
<p>{% for some_item in some_list %} 
    {% if some_item|divisibleby:2 %} 
        Even number {{ some_item }}<br> 
    {% endif %} 
{% endfor %}</p> 
<!-- 如果你想显示循环内的项,建议放在循环里,或者用列表属性,比如下面这样 -->
<!-- <p>Last item in list: {{ some_list.last }}</p> -->
</body> 
</html> 
{% endblock content %}

简单总结下:Django的模板引擎是靠{%和%}这个精确的标记来识别标签的,一旦你在中间加了空格,它就会把整个字符串当成普通文本输出,不会执行任何模板逻辑。调整好标签格式后,再修正过滤器和闭合标签的问题,你的模板就能正常渲染啦!

内容的提问来源于stack exchange,提问作者Ashok Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:59:37