Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中使用特定于模板的JavaScript_Javascript_Html_Django - Fatal编程技术网

在Django中使用特定于模板的JavaScript

在Django中使用特定于模板的JavaScript,javascript,html,django,Javascript,Html,Django,我在django中有一个base\u generic.html页面,其中包含标准的UI元素(导航栏、页脚等),还有一个list.html页面,它扩展了base\u generic.html页面。list.html页面正在使用一个仅在该页面中使用的javascript函数,但为了使其正常工作,我必须将其包含在base\u generic.html页面中 我如何使用Django的内置模板标记和功能在list.html中包含这个javascript函数 我应该使用{%verbatim%}或{%scri

我在
django
中有一个
base\u generic.html
页面,其中包含标准的UI元素(导航栏、页脚等),还有一个
list.html
页面,它扩展了
base\u generic.html
页面。
list.html
页面正在使用一个仅在该页面中使用的
javascript
函数,但为了使其正常工作,我必须将其包含在
base\u generic.html
页面中

我如何使用Django的内置模板标记和功能在
list.html
中包含这个
javascript
函数

我应该使用
{%verbatim%}
{%scripts%}
或其他标记模板吗


我是否应该将其与具有此
django
模板的
html
{%block content%}
内联,还是应该将其放在
{%block content%}
之前或之后?

您有几种方法可以实现您想要的:

  • 只需在
    {%block content%}

    {%block content%}

    我的javascript(); {%endblock内容%}

  • include
    语句用于javascript文件,同样,在
    {%block content%}

    {%include'my_javascript.html%}

通过这种方式,您可以在其他页面上重用javascript代码

  • base\u generic.html
    中创建一个新块,如:

    {%block my_javascript%}{%endblock my_javascript%}


在您的子模板中,按照前面几点中的说明添加javascript。在这种情况下,javascript可以位于
{%block content%}

的外部或内部。另一种方法是在您的views.py中传递js文件的路径:

context = {
        'scripts_to_include':['/static/js/my_js_file.js']
    }
显然,这里可以包含多个js文件。然后,在模板中:

{% if scripts_to_include %}
   {% for script_url in scripts_to_include %}
      <script src="{{script_url}}"></script>
   {% endfor %}
{% endif %}
{%如果脚本包含%}
{scripts_-to_-include%}
{%endfor%}
{%endif%}

我喜欢这样,因为js文件仍然可以存储在一个目录中(而不是直接放入html),js文件也是可重用的。

“但是为了让它工作,我必须将它包含在base_generic.html页面中。”为什么,如果你只在
list.html
中需要它?
list.html
是一个
django
模板,它扩展了
{%“base_generic.html”%}
。是的,它会覆盖块内容中的任何内容,因此它不需要位于“base_generic.html”中“。这似乎不起作用。我正在
list.html
底部添加我的javascript。当然,在实施您推荐的解决方案时,我有一个输入错误。一切都按它应该的那样工作。谢谢你的帮助。