是否可以在 django 模板中的 javascript 中使用 tempatetags?

Posted

技术标签:

【中文标题】是否可以在 django 模板中的 javascript 中使用 tempatetags?【英文标题】:Is it possible to use tempatetags inside javascript in a django template? 【发布时间】:2013-10-17 19:24:55 【问题描述】:

我可以在 django 模板的 javascript 中使用 % url 'ajax_choice_question' % 吗??

例如:如何做到这一点??

urls.py

url(r'^ajax/quest/$','getChoices',name='ajax_choice_question'),

在模板中

<script>
    var urllink="% url 'ajax_choice_question' %";
    alert(urllink);
</scritp>

更新

模板文件

% block extrajavascript %     
    <script src="/static/js/myjs.js"></script>      
% endblock %

myjs.js

var urllink="% url 'ajax_choice_question' %";
alert(urllink);

【问题讨论】:

"我可以使用...吗?"嗯,你试过了吗? @Amadan 它不起作用。即只是提醒% url 'ajax_choice_question' % getChoices 渲染那个模板吗?如果是这样,它应该可以工作。就 django 而言,模板只是文本。您的标签是否在 script 块中并不重要 @TimmyO'Mahony 是的,问题是我将脚本放在外部.js 文件中。我更新了问题 @Amadan 我更新了问题....现在它不能正常工作了。好的,我可以使用网址ajax/quest/ ...无论如何谢谢..我需要删除这个问题吗??? 【参考方案1】:

如果您的模板标签位于外部 javascript 文件中(即 STATIC_ROOT 中的文件),那么您的模板标签将不起作用,因为 django 不提供这些 javascript 文件,您的网络服务器可以。 Django 仅提供视图中指定模板的渲染结果,而不提供任何相关的 javascript 或 css 文件。

如果你想让它工作,你需要创建一个 url 和视图来渲染带有上下文的 javascript 并将其提供给客户端,但这是一个非常糟糕的主意。你最好在你的 html 文件中包含相关的 javascript 并在那里使用你的模板标签,或者找到另一种方法将你的模板标签的结果传递给外部 javascript

【讨论】:

好的,我可以使用网址 ajax/quest/ ...无论如何谢谢.. 我需要删除这个问题吗??? 不,你不需要删除它。

以上是关于是否可以在 django 模板中的 javascript 中使用 tempatetags?的主要内容,如果未能解决你的问题,请参考以下文章

将 request.user 传递给 Django 中的模板

Django是不是可以在子模板中的块外写入文本

Django 模板中的 OR 条件

检查列表 django 模板中是不是存在

django 可以修改模板中的变量值吗?

在 django 模板中的数据表示之间切换