【问题标题】:Variables in Django template are showing in double quotesDjango 模板中的变量显示在双引号中
【发布时间】:2018-04-22 06:44:08
【问题描述】:

我从我的Post 模型中获取数据并简单地传递到模板中。但输出显示在双引号中。 我的 Post 模型中有 html 标签,它不是呈现而是显示为代码。

views.py

# It display the single post
def single_post(request,cat,post_id,post_title):
    single_post = Post.objects.get(pk = post_id)
    return render(request, 'blog/single_post.html', {'single_post': single_post})

single_post.html

<h1>I'm single post page</h1>

{{single_post.title}}

<br>
<br>
{{single_post.content}}

浏览器输出

我的数据库中的数据

【问题讨论】:

  • 屏幕截图有变化吗?它们似乎与 shacker 的答案不符。

标签: python django django-templates


【解决方案1】:

在您的屏幕截图中,我没有看到双引号,而是看到了 HTML 标记。如果您将 HTML 输入到内容中,而不是让不受信任的用户输入,那么您应该认为它可以安全地呈现到页面上(您不太可能发布恶意 javascript,或者用错误的 HTML 搞砸您的布局,对?)。因此,您想对您的内容使用 Django 的 safe 过滤器:

{{single_post.content|safe}}

这将允许对输入和存储的 HTML 进行解释,而不是呈现。

【讨论】:

  • 你能在你的 OP 中添加屏幕截图,显示哪些数据存储在 db 中(如 Django Admin 中所示)以及双引号出现在页面上的位置吗?
  • 您的 IBB 屏幕截图显示 DOM 中的引号 - 这是正常的。如果您在最终显示的页面上遇到双引号问题,请显示出来。从您发布的内容来看,唯一真正的问题是显示的 HTML 标记。
  • 请向最终用户显示页面,显示双引号问题。
  • 我想我的问题已经解决了。也许在浏览器中双引号总是存在于段落中。我刚刚看到了一些其他网站的内容和双引号。我想我从来没有遇到过任何问题,通常在浏览器的黑色文本中(在浏览器代码中)有双引号
  • 我长期从事网络开发。今天在我的生活中,我知道了。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多