[英]DJANGO HTML TEMPLATES : How to know Selected item in drop Down and display In the html page without any action
[英]Django Templates: How to display html code?
我正在尝试在博客中显示一些 HTML 标记,并且想知道是否有一种方法可以直接包装我的 Django 模板的一部分,而无需将其放入上下文变量中。
例如,我想输出一堆代码,一些是 JavaScript,一些是 HTML,还有一些是 CSS。 如果我将代码直接输入到我的 Django 模板中,并将其包装在一些 pre 标签中:
<pre>
/* Here is the markup I want to display: */
... lots of HTML
</pre>
呈现 HTML 标记。
当然,要显示:
<
我应该使用
<
并显示
>
我应该使用
>
我尝试在代码部分周围添加 Django 标记 {% autoescape on %},但它没有效果,因为我没有渲染上下文变量。
我想知道是否有比用 < 替换每次出现的 < 更简单的方法。 并且每次出现 > 和 >
我也知道,如果我将要显示的代码放入上下文变量中,那么在我的模板中,仅显示该上下文变量就会自动转义代码。
但我宁愿能够直接剪切并粘贴我想要显示的代码到我的模板中。 有没有办法做到这一点并显示 HTML 标签(即
<h1> Heading Level 1 </h1>
无需在我的模板中将其写为:
<h1> Heading Level 1 </h1>
您必须使用 xmp 标签。
<xmp>
<h1>Testing Html</h1>
</xmp>
注意:在您尝试手动实施之前,请查看 ckeditor。 ckeditor 文档,如果这不是您要查找的内容,则仅继续回答。
只需将您的变量包装在下面的 Django 模板标签中。
{% autoescape off %}
{{your_variable_here}}
{% endautoescape %}
将 HTML 代码放入“your_variable_here”变量中,Django 会将其显示为 HTML。 所有 HTML 标签都可以使用。
编辑:对不起,我错过了重要的部分。 在视图中这样做
from django.template.loader import render_to_string
rendered = render_to_string('my_template.html', {'foo': 'bar'})
并将这个呈现的字符串传递给模板变量,并通过放置行在其他模板中呈现给定的模板
{% autoescape off %}
{{rendered}}
{% endautoescape %}
这个问题很老,但它出现在搜索引擎上,没有答案是正确的。
Sławek Kabik's 已弃用,Smit Patel's 过于复杂(它使视图膨胀)。
为了执行 OP 的要求,您必须在{% filter %}
标签中使用force_escape
内置过滤器。
例子:
<pre>
<code>
{% filter force_escape %}
<span class="hello">Anything HTML really</span>
{% endfilter %}
</code>
</pre>
输出:
<pre>
<code>
<span class="hello">Anything HTML really</span>
</code>
</pre>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.