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

Django模板中Pandas DataFrame显示异常:HTML代码原样输出求助

解决Django模板中Pandas DataFrame HTML代码不渲染的问题

嘿,这问题我刚学Django的时候也踩过坑!其实原因很简单:Django默认会自动转义模板变量里的HTML特殊字符,把<、>这些字符转成实体编码,所以你看到的是原始HTML代码而不是渲染好的表格。

给你两种简单的解决办法,选哪种都可以:

方法1:在模板中使用safe过滤器

直接在模板输出变量的时候加上|safe过滤器,告诉Django这段HTML内容是安全的,不需要转义:

修改你的模板代码:

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'blog/style.css' %}">
<html>
<head><title>HTML Pandas Dataframe with CSS</title></head>
<body>
{{ table|safe }} <!-- 这里加上|safe过滤器 -->
</body>
</html>

方法2:在视图中标记HTML为安全

如果你想在视图层处理,就用Django提供的mark_safe函数,把生成的HTML字符串标记为安全内容,这样传到模板里直接输出即可:

修改你的views.py代码:

from django.shortcuts import render
from django.utils.safestring import mark_safe  # 导入mark_safe工具
import pandas as pd

def about(request):
    df = pd.DataFrame({'a': [12, 3, 4], 'b': [5, 6, 7]})
    df_html = df.to_html(classes='mystyle')
    safe_df_html = mark_safe(df_html)  # 将HTML标记为安全内容
    return render(request, 'blog/about.html', {'table': safe_df_html})

小提醒

这两种方法都能解决问题,但要记住:只有当你完全信任要输出的HTML内容时才使用!比如这里是你自己用Pandas生成的表格,没有用户输入的内容,所以很安全。如果是包含用户提交的内容,一定要做好过滤,避免XSS攻击哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:15:51