0

我知道对此有一个简单的答案,但我还没有找到。在我的views.py 中,我有一个函数旨在添加一个javascript onload 函数以在页面加载时运行。页面加载脚本,但脚本不运行。见下文:

from django.template.response import TemplateResponse
t = TemplateResponse(request, 'viewer/index.html', {})
t.render()
t.content = t.content + "<script type='text/javascript'>window.onload=function(){alert('here');}" + "</script>"
return t
4

2 回答 2

3

为什么不简单地在模板中添加脚本?或者更好的是,在专用的 javascript 文件中?Django 视图并不是生成脚本的好板子,它会使你的代码容易出错并且更难阅读和调试。

如果你需要将变量从 python 传递给你的 js,你可以使用类似的东西:

from django.template.response import TemplateResponse
context = {
    'variable': value,
}
t = TemplateResponse(request, 'viewer/index.html', context)

在您的模板中:

<html>
<head></head>
<body>
…
var config = {
    'variable': {{ variable }}
}
<script type="text/javascript" src="path/to/script.js"></script>
</body>

于 2013-10-31T09:02:53.093 回答
1

你不应该那样操作TemplateResponse。相反,正确地传递内容。

from django.template.response import TemplateResponse

script = "window.onload = function(){ alert('here'); }"
t = TemplateResponse(request, 'viewer/index.html', {
    "script": script
})
t.render()
return t

然后在你的模板中

<html>
    <body>
        <script>{{ script }}</script>
    </body>
</html>
于 2013-10-31T08:19:13.383 回答