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

点击按钮显示Django表单时出现未终止字符串字面量错误求助

解决JavaScript的"SyntaxError: unterminated string literal"错误

这个错误我之前也碰到过,根源出在你把Django模板变量{{form}}直接塞进了JavaScript的单引号字符串里。让我拆解一下问题:

当Django渲染页面时,{{form}}会被替换成你提供的那段HTML代码,而这段HTML里包含换行符(比如<textarea>标签里的空格换行)。JavaScript的单引号字符串是不允许直接跨行的,一旦渲染后的HTML出现换行,JS解析器就会认为你的字符串还没写完,直接抛出"unterminated string literal"错误。

给你两个靠谱的解决方案:

方案一:使用Django的escapejs过滤器转义内容

Django自带了专门处理JavaScript字符串转义的过滤器escapejs,它会把HTML里的换行、引号等特殊字符转成JS能识别的格式(比如把换行转成\n,单引号转成\')。修改你的JavaScript代码如下:

$(document).ready(function(){ 
  $('#modifier').click(function(){ 
    $('#modification').append('{{ form|escapejs }}'); 
    $('#test').show() 
  }); 
});

这样渲染后的JS字符串就会是一个完整、合法的字符串,不会出现未终止的问题。

方案二:提前隐藏表单,点击时再插入DOM

如果你的表单结构比较复杂,或者不想处理转义的问题,可以先把表单提前写在页面里并隐藏,点击按钮时再把它的HTML插入到目标位置。

首先在HTML中添加隐藏的表单容器:

<div id="hidden-form" style="display: none;">{{ form }}</div>

然后修改JavaScript代码:

$(document).ready(function(){ 
  $('#modifier').click(function(){ 
    $('#modification').append($('#hidden-form').html()); 
    $('#test').show() 
  }); 
});

这种方式绕开了把HTML直接写进JS字符串的问题,通过操作DOM元素的内容来插入表单,更直观也更不容易出错。

你可以根据自己的场景选其中一种方案试试,应该就能解决这个语法错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:59:22