在Django中包含自定义javascript的最佳实践?

在Django中包含自定义javascript的最佳实践?,javascript,django,Javascript,Django,对Django来说还是新鲜事。我正在尝试将日历小部件合并到日期输入中,如图所示。下面的test.html工作正常: {% extends "base_alt_simple.html" %} # note this has {% load static %} {% block title %}Schedule{% endblock %} {% block main_content %} <div class="container"> <h3>Building n

对Django来说还是新鲜事。我正在尝试将日历小部件合并到
日期
输入中,如图所示。下面的test.html工作正常:

{% extends "base_alt_simple.html" %} # note this has {% load static %}

{% block title %}Schedule{% endblock %}

{% block main_content %}

<div class="container">

  <h3>Building name</h3>

</div>

<div class="container">
<div class="bootstrap-iso">
 <div class="container-fluid">
  <div class="row">
   <div class="col-md-6 col-sm-6 col-xs-12">
    <form method="post">
     <div class="form-group ">
      <label class="control-label " for="date">
       Date
      </label>
      <div class="input-group">
       <div class="input-group-addon">
        <i class="fa fa-calendar">
        </i>
       </div>
       <input class="form-control" id="date" name="date" placeholder="MM/DD/YYYY" type="text"/>
      </div>
     </div>
     <div class="form-group">
      <div>
       <button class="btn btn-primary " name="submit" type="submit">
        Submit
       </button>
      </div>
     </div>
    </form>
   </div>
  </div>
 </div>
</div>
</div>
<script>
    $(document).ready(function(){
        var date_input=$('input[name="date"]'); //our date input has the name "date"
        var container=$('.bootstrap-iso form').length>0 ? $('.bootstrap-iso form').parent() : "body";
        date_input.datepicker({
            format: 'mm/dd/yyyy',
            container: container,
            todayHighlight: true,
            autoclose: true,
        })
    })
</script>
编辑 添加了当前完整的test.html

{% extends "base_alt_simple.html" %}
{% load static %}

{% block title %}Schedule{% endblock %}

{% block main_content %}

<div class="container">

  <h3>Building name</h3>

</div>

<div class="container">

  <div class="jumbotron">
  <h4>Find a time to visit </h4>

  <div class="container">
  <div class="row">


   <div class="col-md-6 col-sm-6 col-xs-12">
    <form method="post">
     <div class="form-group ">
      <label class="control-label " for="date">
       Date
      </label>
      <div class="input-group">
       <div class="input-group-addon">
        <i class="fa fa-calendar">
        </i>
       </div>
       <input class="form-control" id="date" name="date" placeholder="MM/DD/YYYY" type="text"/>
      </div>
     </div>
     <div class="form-group">
      <div>
       <button class="btn btn-primary " name="submit" type="submit">
        Submit
       </button>
      </div>
     </div>
    </form>
   </div>

  </div> <!-- row -->
  </div> <!-- /container -->

  </div> <!-- end jumbotron -->

</div> <!-- end container -->


{% endblock main_content %}


{% block scripts %}

<script src="{% static 'js/custom.js' %}"></script> 

{% endblock scripts %}
{%extensed“base\u alt\u simple.html”%}
{%load static%}
{%block title%}计划{%endblock%}
{%block main_content%}
建筑物名称
找时间参观
日期
提交
{%endblock主内容%}
{%block scripts%}
{%endblock脚本%}

如果必须使用静态文件,请按照中的步骤操作

假设您将
yourscript.js
放在django应用程序目录
your_app/static/yourscript.js
中,您只需执行以下操作:

{% load static %}
<script src="{% static 'yourscript.js' %}"></script>
{% load static %}

<script src="{% static 'relative/path/from/static/dir/yourscript.js' %}"></script>
就在
base\u alt\u simple.html中
的前面。或者,如果不想将其放在那里,可以定义一个脚本块:

{% block scripts %}

{% endblock %}
base\u alt\u simple.html
test.html
中的
前面再次出现:

{% load static %}
{% block scripts %}
<script src="{% static 'custom.js' %}"></script>
{% endblock %}
{%load static%}
{%block scripts%}
{%endblock%}

另外,不要忘记将
custom.js
放入您的应用程序/static/custom.js
并重新启动服务器。

您必须使用静态文件,请按照中的步骤操作

假设您将
yourscript.js
放在django应用程序目录
your_app/static/yourscript.js
中,您只需执行以下操作:

{% load static %}
<script src="{% static 'yourscript.js' %}"></script>
{% load static %}

<script src="{% static 'relative/path/from/static/dir/yourscript.js' %}"></script>
就在
base\u alt\u simple.html中
的前面。或者,如果不想将其放在那里,可以定义一个脚本块:

{% block scripts %}

{% endblock %}
base\u alt\u simple.html
test.html
中的
前面再次出现:

{% load static %}
{% block scripts %}
<script src="{% static 'custom.js' %}"></script>
{% endblock %}
{%load static%}
{%block scripts%}
{%endblock%}

另外,不要忘记将
custom.js
放在
应用程序/static/custom.js
中并重新启动服务器。

Django以完全不同的方式将静态文件加载到模板中。您应该首先设置
static
目录,然后使用Django的特殊templatetag从那里加载静态文件。如果在
yourscript.js
中有js代码,则在模板中可以执行以下操作:

{% load static %}
<script src="{% static 'yourscript.js' %}"></script>
{% load static %}

<script src="{% static 'relative/path/from/static/dir/yourscript.js' %}"></script>
{%load static%}

Django将静态文件收集到
static
目录。为了获得关于如何在项目中设置静态目录的更多信息,read

Django以完全不同的方式将静态文件加载到模板中。您应该首先设置
static
目录,然后使用Django的特殊templatetag从那里加载静态文件。如果在
yourscript.js
中有js代码,则在模板中可以执行以下操作:

{% load static %}
<script src="{% static 'yourscript.js' %}"></script>
{% load static %}

<script src="{% static 'relative/path/from/static/dir/yourscript.js' %}"></script>
{%load static%}

Django将静态文件收集到
static
目录。为了获得有关如何在项目中设置静态目录的更多信息,请阅读

I have the load tag In base template。然后我把剧本改成了你的。但是,只有当模板中有js脚本时,日历弹出才会起作用。我没有做什么来通过script命令把它拉进来?能看到你的base_alt_simple.html吗?刚刚添加了完整的base模板刚刚合并了你的建议。现在我得到错误:
第行的块标记无效:“static”,应该是“endblock”。您是否忘记注册或加载此标记?
更新了原始问题以显示编辑。我的
custom.js
中有一个早期版本的js,这可能是个问题。把它清理干净,现在可以用了。谢谢我在基本模板中有load标记。然后我把剧本改成了你的。但是,只有当模板中有js脚本时,日历弹出才会起作用。我没有做什么来通过script命令把它拉进来?能看到你的base_alt_simple.html吗?刚刚添加了完整的base模板刚刚合并了你的建议。现在我得到错误:
第行的块标记无效:“static”,应该是“endblock”。您是否忘记注册或加载此标记?
更新了原始问题以显示编辑。我的
custom.js
中有一个早期版本的js,这可能是个问题。把它清理干净,现在可以用了。谢谢