Django.Jquery.用引号转义字符串错误

Django. Jquery. escaping string with quotes error

本文关键字:转义字符 字符串 错误 转义 Jquery Django      更新时间:2023-09-26

在小型论坛中,任何用户都可以保存帖子。有时,这些帖子包括用引号(" ")包围的单词。当我尝试用javascript处理这些字符串时,这会给我一个错误。

我写了一些jquery代码,使用django变量,像这样:

new_text = "{{text|safe}}";
$("#text_p").text(new_text);

如果我把它标记为"安全",那么javascript会给我一个语法错误:

the text "(error here)word between quotes" the user posted

这是合乎逻辑的,因为javascript理解这样的引号:

new_text = "this is the text "word between quotes" the user posted"
所以,如果我不把它标记为"safe"并让django转义文本,它不会给我一个错误,但是文本看起来是这样的:
 the text "word between quotes&quot the user posted

我不知道该怎么做,我想这可能不是简单的原因,如果我使用单引号来声明javascript变量,当用户发布带有单引号的文本时,我也会遇到同样的问题。如果我使用正则表达式替换双引号,而不将文本标记为"text|safe",则其他标记将被转义,文本将充满"

我有一个想法,可能工作,但是丑陋的,可能不是最好的选择:在<p class = "hidden">标记中包含文本,然后使用jquery调用它。

问题是,我怎么解这个?有更好的方法吗?提前感谢您的帮助。

编辑:我创建了一个Runnable来更好地解释它

使用escapejs过滤器。例子:

{{ string|escapejs }}

好的,我找到了一个部分的解决方案,希望它能帮助到将来的人。这不是一个优雅的解决方案,所以,如果有人有更好的选择,我们将非常欢迎。

我将带有"引号"的文本包含在html隐藏标签中。

python-django:
text_with_quotes = 'this is a text and a word between "quotes"'
html:
<p id = "new_text" class = "hidden"> {{text_with_quotes|safe}}</p>
js:
new_text = $("#new_text").text();
$("#text_p").text(new_text);

它的工作原理。但是使用javascript和/或python可能是更好的选择。