渲染脚本显示在身体模板django内

时间:2017-02-25 19:09:17

标签: django render

抱歉我的英语不好。 我用

{% ishout.js %}

head 里面,在django模板中渲染脚本文件,但它们显示为字符串

"<script type="text/javascript" src="http://localhost:5500/socket.io/socket.io.js"></script>
<script type="text/javascript" src="http://localhost:5500/client/ishout.client.js"></script>"

并且正文内部 head 。 之后的其他脚本也会显示在正文中。

我搜索并通过编码找出,但我找不到如何解决它。

更新 这是views.py文件

@login_required
def home(request):
    users = User.objects.exclude(id=request.user.id)
    v = RequestContext(request, {'users':users})
    # return render(request, 'home.html', {'users':users})
    return render_to_response('home.html', v)

这是home.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Home</title>
    {% load drealtimetags %}
    {% ishout_js %}
</head>
<body>
    <h1>Dashboard</h1>
    {% for user in users %}
        {{ user.first_name }}<a href="/alert/?user={{ user.id }}">Alert (Hello)</a>
    {% empty %}
        <b>No user found</b>
    {% endfor %}
</body>
</html>

更新2: 这是页面来源

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Home</title>


    &lt;script type=&quot;text/javascript&quot; src=&quot;http://localhost:5500/socket.io/socket.io.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;http://localhost:5500/client/ishout.client.js&quot;&gt;&lt;/script&gt;

    <script>
        ishout.on('alertchannel', function(data){
            alert(data.msg);
        });

        ishout.init();
    </script>
</head>
<body>
    <h1>Dashboard</h1>

        phuc<a href="/alert/?user=2">Alert (Hello)</a>

        <a href="/alert/?user=3">Alert (Hello)</a>

</body>
</html>

当我检查时

<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Home</title>


</head>
<body>
&lt;script type="text/javascript" src="http://localhost:5500/socket.io/socket.io.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://localhost:5500/client/ishout.client.js"&gt;&lt;/script&gt;

    <script>
        ishout.on('alertchannel', function(data){
            alert(data.msg);
        });

        ishout.init();
    </script>


    <h1>Dashboard</h1>

        phuc<a href="/alert/?user=2">Alert (Hello)</a>

        <a href="/alert/?user=3">Alert (Hello)</a>


</body>

Snapshot

2 个答案:

答案 0 :(得分:0)

由于您要包含每个js文件,并且希望将其呈现并解释为html脚本标记,因此请尝试将其设置为模板文件(88, 77, 50, 20, 5) (90, 76, 54, 34, 15, 8, 4) (81, 74, 62, 51, 49, 30, 22, 10, 8) 88 5 90 4 81 8 。您根本不需要更改文件的内容。

从那里,使用{%include%}标记。它看起来像

_ishout_includes.html

答案 1 :(得分:0)

因为标签正在返回正在转义的HTML,因此浏览器会将其呈现为正文中的文本而不是<head>中的真实HTML。

关闭代码周围的自动启动功能:

{% autoescape off %}
    {% ishout_js %}
{% endautoescape %}