我创建了一个需要Django视图参数的Django模板。其中一个参数是一些显示甘特图的html。它不是将参数渲染为正确的html,而是将其渲染为文本。
为什么将参数内容视为文本而不是识别<script>
和<div>
标记?
传递给Django视图的参数I中的html如下所示:
<script language="Javascript" type="text/javascript">
window.onload = function() {
var MyVar = [
{label: "Label-less", times:[{"starting_time":1420228800000,"ending_time":1420257600000}, {"starting_time":1420264800000, "ending_time":1420293600000}, ]},
];
function drawtimeline_MyVar() {
var chart = d3.timeline()
.showBorder()
.stack() // toggles graph stacking
...
*(code removed here for size purposes)*
...
var svg = d3.select("#DIV_MyVar").append("svg").attr("width", 1000)
.datum(MyVar).call(chart);
}
//Call the function
drawtimeline_MyVar();
}
</script>
<div>
<h3>Mehe</h3>
<div id="DIV_MyVar"></div>
</div>
<div id="DIV_MyVar_hover" class="hoverDiv">
<div class="coloredDiv"></div>
<table border=1 cellpadding=10>
<tr>
<td>
<p>Task ID: </p><div id="name"></div>
</td>
</tr>
</table>
</div>
参数 comm_request 在模板底部使用,如下所示:
<html>
<head>
<title>Search Results</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script language="Javascript" type="text/javascript" src="./Review/d3-timeline-master/src/d3-timeline.js"></script>
<script type="text/javascript">
{{ JSLIB }}
</script>
<STYLE type="text/css">
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-family: sans-serif;
font-size: 10px;
</STYLE>
</head>
<body>
<div class="container">
<div class="page-header">
<h1>
<p class="text-center">Much Results</p>
</h1>
</div>
</div>
<div class="container">
<h3><p class="text-center">Charts</p></h3>
</div>
<div class="container">
<h4 class="text-center">
Gantt Chart
</h4>
</div>
{{ comm_requests }}
</body>
</html>
答案 0 :(得分:2)
在模板中,您可以使用safe
过滤器。
{{ variable_with_html_tag_value | safe }}
答案 1 :(得分:1)
您需要将html标记为安全,可能使用django.utils.safestring.mark_safe
并将参数作为变量传递将解决您的问题。
答案 2 :(得分:0)
查看safe filter的文档。这是标记字符串 safe 所必需的,可以安全地按原样打印而不转义任何HTML。请注意,当autoescape
设置为关闭时,安全过滤器无效。使用autoescape
,您可以按照以下方式执行操作:
{% autoescape off %}
{{ body }}
{% endautoescape %}
这会自动关闭HTML转义,以便变量body
的内容按原样输出。