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

在Django中实现字符串转换为HTML渲染的问题咨询

问题核心原因

Django模板默认开启了自动HTML转义机制,会把传入的HTML字符串中的<、>、"等特殊字符转义为字符实体,避免XSS攻击,因此你渲染出来的是HTML源码而非解析后的页面内容,不是转换操作的问题。

解决方法

方法1:模板层添加safe过滤器(最常用)

直接修改HTML模板代码,在变量后添加safe过滤器,告诉Django这段内容是安全的不需要转义即可:

{% extends "encyclopedia/layout.html" %}

{% block title %}
    Encyclopedia
{% endblock %}

{% block body %}
    {{ fileContent|safe }}
{% endblock %}

方法2:视图层标记安全字符串

如果这段内容在所有引用的位置都不需要转义,可以在视图层直接将内容标记为安全字符串,无需修改模板:
首先导入mark_safe工具:

from django.utils.safestring import mark_safe

修改视图代码:

f = mark_safe(markdown2.markdown(util.get_entry(title)))
return render(request, "encyclopedia/entry.html", {
    "fileContent": f
})

注意事项

如果你的Markdown内容支持普通用户提交,直接渲染原始HTML存在XSS注入风险,建议先使用内容过滤库清除<script>、<iframe>等危险标签后再渲染。

内容的提问来源于stack exchange,提问作者Nguyễn Tường Bách

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:45:04