将所有 Javascript 移动到 Django 中的单独文件

Move all Javascript to a separate file in Django

我从 Django 开始做一些事情。我想保持 html 个文件干净,没有 <script> 个块。是否可能,即使我的 js 部分使用 {% url %} 块?

示例:

page.html

<div> 
<h1> My home url is: </h1>
<div id="js-tag" ></div>
</div>
<script>
$(function(){
  $('#js-tag').html("{% url 'home' %}")
});
</script>

我想要的是删除它并将其放在一个单独的 js 文件中,然后将其导入到 page.html

(几乎)Django 一切皆有可能! ;)

您只需将 JavaScript 代码放在单独的 HTML 文件中,然后将其简单地包含在您的主模板中(此处:page.html),如下所示:

{% include 'path/to/my/template_file/js_code.html' %}

您可能希望使用 django-js-reverse 以便能够在 js 文件中使用命名的 URL 模式。 您还可以使用 staticfiles 应用程序在 Django 中管理您的静态资产。

这将允许您以这种方式包含您的 js 文件:

{% load static %}  {# Only load static once at the top of your file #}
<script src="{% static 'path/to/js/in/staticfiles.js' %}"></script>

并且在js文件中你可以使用:

$('#js-tag').html(Urls.home());