Django:将HTML字符串传递给模板

亲友性鸵鸟

我在尝试显示在django视图上创建的html代码段时遇到问题。这是正在发生的事情。

在我看来,我正在尝试将一本书的描述传递给模板,这些描述将根据用户的动作进行隐藏/显示。这些描述存储在服务器上的html文件中。

def my_view()
     #loop through the list of books, read their corresponding a html file, and parse it to fill in the book details
     #code, code, code...
     #take the resulting string, append it on books description array, log it and send it to template
     logger.debug(books_description["Clockwork orange"])
     return render_to_response("my_template.html", {'bd': books_description}, context_thingy)

到现在为止还挺好。我的日志完全按照原样显示了html字符串:

 <div id="modal_book_name">Clockwork orange</div>
 <div id="modal_book_genre">Dystopian fiction</div>
 <br>
 <div id="modal_book_desc">yadayadayadayada</div>

现在,由于我不想将内容放在我的html代码上,因此我将书的描述读入javascript变量中,如下所示:

 books_description = {};
 {% for book, book_desc in bd.items %}
       books_description["{{ book }}"] = "{{ book_desc|escapenewline }}"
 {% endfor %}

escapenewline是一个过滤器,在每行的末尾添加一个\,以确保javascript能够正确解释整个字符串内容。

最终,当用户想要查看某本书的描述时,只需单击它,然后模态就会显示该书的描述。为此,我有:

    console.log(books_description[book_name]);
    $("#modal_info").html(books_description[book_name]);

同样,此console.log看起来一切正常:

<div id="modal_book_name">Clockwork orange</div><div id="modal_book_genre">Dystopian fiction</div><br><div id="modal_book_desc">yadayadayadayada</div>

不幸的是,当我打开页面时,modal_info div为空。当我打开浏览器的开发人员工具并检查div的html时,这就是我看到的内容:

 <div id="modal_info">
      "<div id="modal_book_name">Clockwork orange</div><div id="modal_book_genre">Dystopian fiction</div><br><div id="modal_book_desc">yadayadayadayada</div>"
 </div>

问题出在那些引号中。他们是如何出现在那的?我如何摆脱它们?为什么将它们放在首位?

提前致谢。如果不清楚,请随时提出,我将予以澄清。

更新:嗯,事实证明modal_info div毕竟不是空的。.文本与背景只有相同的颜色。不好意思,我真傻。但是问题仍然存在。我应该看到的地方:

 Clockwork Orange
 Dystopian fiction

 yadayadayadayada

我看到的是文字html:

 <div id="modal_book_name">Clockwork orange</div><div id="modal_book_genre">Dystopian fiction</div><br><div id="modal_book_desc">yadayadayadayada</div>

我尝试使用parseHTML函数将字符串解析为HTML:

  var book_desc = $.parseHTML(books_description[book_name]);
  $("#modal_info").html(book_desc);

但是结果是一样的。任何想法如何使浏览器将字符串解释为html代码而不是文字字符串

亲友性鸵鸟

问题解决了。不像我想的那么戏剧化。碰巧的是,django将html标记(例如“ <”和“>”)转换为“&lt”和“&gt”

这导致页面上的输出正确,但是无法创建相应的DOM对象。

解决方法:

 {% autoescape off %}
    {% for book, book_desc in bd.items %}
       books_description["{{ book }}"] = "{{ book_desc|escapenewline }}"
    {% endfor %}
 {% endautoescape %}

花了我一段时间。如果有人遇到类似问题,这里有一些有关自动转义的信息

自动转义过滤器

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在模板中将字符串传递给Django URL

来自分类Dev

将字符串文字传递给模板函数

来自分类Dev

将布尔字符串查询传递给Django

来自分类Dev

将日期字符串传递给Django管理参数

来自分类Dev

将HTML字符串传递给JavaScript函数

来自分类Dev

将字符串传递给Asyntask

来自分类Dev

将字符串传递给Audio()

来自分类Dev

将字符串传递给函数

来自分类Dev

将字符串传递给函数

来自分类Dev

将等号传递给字符串

来自分类Dev

通过值将字符串以外的所有类型传递给模板函数

来自分类Dev

如何将渲染角度js html字符串传递给html页面

来自分类Dev

如何将字符数组传递给字符串

来自分类Dev

Django视图将unicode名称而不是字符串传递给url

来自分类Dev

如何将非拉丁字符串传递给Django中的url参数?

来自分类Dev

使用JQuery和Ajax将JSON字符串传递给django

来自分类Dev

存储字符串文字数组,传递给需要字符串文字的模板

来自分类Dev

如何将本地字符串值传递给html代码?

来自分类Dev

如何将HTML作为字符串传递给TextArea

来自分类Dev

如何将javascript中的变量传递给HTML字符串

来自分类Dev

如何将字符串从 HTML 传递给 Javascript 函数?

来自分类Dev

如何将 JavaScript 的字符串变量传递给 html 表单输入,

来自分类Dev

如何将 Javascript 作为字符串传递给 HTML 函数

来自分类Dev

如何将字符串传递给HashSet包含?

来自分类Dev

jQuery:将字符串变量传递给date对象

来自分类Dev

将字符串传递给javascript函数

来自分类Dev

Powershell:将json字符串传递给curl

来自分类Dev

将PHP变量作为字符串传递给javascript

来自分类Dev

Bash将字符串参数传递给python脚本

Related 相关文章

热门标签

归档