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

如何在Django中显示原始换行符?保留\r\n等字符不解析

解决Django中在HTML展示变量原始值(保留\r\n字面量)的问题

要在HTML页面中原样显示变量里的\r\n等转义字符,而不是让浏览器把它们解析成换行,你需要处理两个关键点:把实际的换行字符转换成字面量的\r\n,同时确保HTML不会解析这些特殊字符。下面是几种实用的解决方案:

方案1:在视图层预处理变量

直接在Python代码里把变量中的实际换行符替换成字面量的转义序列,这样模板输出时就能显示原始的\r\n:

# 你的原始变量
my_variable = 'hello world\r\n I would like to have in my html page the exact value of my_variable . I don\'t want the interpretation of linebreaks'

# 替换实际的回车/换行符为字面量的\r和\n
display_var = my_variable.replace('\r', '\\r').replace('\n', '\\n')

然后在模板中直接输出(Django默认会自动转义HTML特殊字符,所以不用担心<、>被解析):

{{ display_var }}

方案2:在模板层使用过滤器处理

如果不想修改视图代码,可以用Django的replace过滤器在模板中直接替换换行符:

{{ my_variable|replace:"\r":"\\r"|replace:"\n":"\\n" }}

注意:模板中的字符串转义需要用双反斜杠\\来表示字面量的单个反斜杠,这样最终输出才会是\r和\n。

方案3:使用stringescape过滤器(更省心的通用方案)

Django内置的stringescape过滤器会自动把字符串中的特殊字符转义成字面量形式,包括换行符、引号等,非常适合需要完整展示原始字符串的场景:

<!-- 用<code>标签可以让显示效果更清晰,类似代码样式 -->
<code>{{ my_variable|stringescape }}</code>

这个过滤器会把实际的\r\n转换成字面量的\r\n显示,同时还会转义<、>、"等字符,避免被浏览器解析成HTML元素。

验证效果

不管用哪种方法,最终在HTML页面上你都会看到:

hello world\r\n I would like to have in my html page the exact value of my_variable . I don't want the interpretation of linebreaks

完全保留了变量的原始字面量内容,不会出现换行效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:17