Django加载静态jquery脚本

时间:2018-05-08 08:30:33

标签: jquery django include

我有两个Django模板,一个用于详细更新视图,另一个用于创建视图。我使用一个简单的jquery脚本来显示/隐藏html字段,具体取决于用户选择的component_type。但是,此jquery脚本对于create和detail-update模板是相同的(违反DRY原则)。所以我想将它保存在一个单独的文件中。怎么做?

创建模板保存在MyApp / templates / MyApp / create.html中,定义如下:

{% extends 'base.html' %}

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

{% block content %}
<h2>Create new component</h2>

{% include 'snippets/form-snippet.html' with form=form %}

{% endblock %}

我将脚本保存在MyApp / static / MyApp / js / jquery_script.js中,定义如下:

<script>
{% block jquery %}

    $(document).ready(function(){
        hideShow()
    })

    $('#id_component_type').click(function(){
        hideShow()
    });

    function hideShow(){
        if(document.getElementById('id_component_type').options[document.getElementById('id_component_type').selectedIndex].value == "k_v")
        {
            $('#id_length').parents('p:first').hide();
            $('#id_k_v').parents('p:first').show();
        }else
        {
            $('#id_length').parents('p:first').show();
            $('#id_k_v').parents('p:first').hide();
        }
    }

{% endblock %}
</script>

我的设置文件应该正确配置(至少调试= True)。一些适用的设置:

STATIC_URL = '/static/'

INSTALLED_APPS = [
    'rest of the app',
    'django.contrib.staticfiles',
]

2 个答案:

答案 0 :(得分:0)

将脚本放在静态文件夹中,然后将其包含为:

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

有关静态文件的更多文档here

答案 1 :(得分:0)

  

创建一个具有所需功能的Jquery插件,并将内部样式表链接到template.html。

     

单击here以了解如何创建Jquery插件

     

它的创建简单。请使用它。