django-javascript在包含的模板中不工作

django-javascript在包含的模板中不工作,javascript,django,django-templates,Javascript,Django,Django Templates,我在django中有一个名为base.html的模板,它通过{%include'gui/page.html%} 在该模板中,我有以下javascript,允许在设置时选择整个文本字段,如此文本我将选择所有 <script> $(document).ready(function(){ $('p').dblclick(function(e){ $(this).selectText(); e.preventDefault();

我在django中有一个名为
base.html
的模板,它通过
{%include'gui/page.html%}

在该模板中,我有以下javascript,允许在设置时选择整个文本字段,如
此文本我将选择所有

<script>
$(document).ready(function(){

     $('p').dblclick(function(e){

         $(this).selectText();
             e.preventDefault();

         });

         });
         jQuery.fn.selectText = function(){
             this.find('input').each(function() {
                if($(this).prev().length == 0 || !$(this).prev().hasClass('p_copy')) { 
                   $('<p class="p_copy" style="position: absolute; z-index: -1;"></p>').insertBefore($(this));
                }
            $(this).prev().html($(this).val());
        });
        var doc = document;
        var element = this[0];
            console.log(this, element);
            if (doc.body.createTextRange) {
                var range = document.body.createTextRange();
                range.moveToElementText(element);
                    range.select();
            } else if (window.getSelection) {
                var selection = window.getSelection();        
                var range = document.createRange();
                    range.selectNodeContents(element);
                    selection.removeAllRanges();
                    selection.addRange(range);
    }
};
</script>

$(文档).ready(函数(){
$('p').dblclick(函数(e){
$(this.selectText();
e、 预防默认值();
});
});
jQuery.fn.selectText=函数(){
this.find('input').each(function(){
如果($(this.prev().length==0 | |!$(this.prev().hasClass('p|u copy')){
$('

”).insertBefore($(this)); } $(this.prev().html($(this.val()); }); var doc=单据; var元素=此[0]; console.log(这个,元素); if(doc.body.createTextRange){ var range=document.body.createTextRange(); range.moveToElementText(元素); range.select(); }else if(window.getSelection){ var selection=window.getSelection(); var range=document.createRange(); 范围。选择节点内容(元素); selection.removeAllRanges(); 选择。添加范围(范围); } };
如果我直接访问模板@
http://localhost/gui/page.html
javascript可以工作,但是如果我通过
http://localhost/base.html
双击该字段不起任何作用


我尝试将javascript包含在base.html中,但仍然无法加载。django在通过包含的模板调用时如何加载javascript?

django不会修改或加载模板中的任何javascript。它只需将其传递到输出。

也有同样的问题。为了解决这个问题,必须做下一件事:

  • 在base.html中添加:

    • 所有的基本脚本,比如我们

    • 添加块,类似于:
    {%block extrascripts%}{%endblock%}

  • 将手工制作的脚本放到
    /static/js/hand_make.js

  • child
    模板中,包括,即我们在
    {%include'child\u template.html%}
    中使用的模板:

    • 在顶部添加
      {%load staticfiles%}
    • 在中间添加html
    • 最后加上
    {%block extrascripts%}{%endblock%}
    (由于某些原因,无法使用漂亮的样式添加它)

  • 如果出于某些原因需要将数据从模板提供给JS,则需要执行以下操作:

    {% block extrascripts %}
        <script>
            var my_var_1 = "{{ some_template_data.var_1 }}",
                my_var_2 = "{{ some_template_data.var_12 }}";
        </script>
        <script type="text/JavaScript" src="{%  static 'js/hand_made.js' %}"></script>
    {% endblock %}
    
    {%block extrascripts%}
    var my_var_1=“{{some_template_data.var_1}}”,
    my_var_2=“{{some_template_data.var_12}}”;
    {%endblock%}
    

    在这种情况下,
    my_var_1
    my_var_2
    将在
    hand_made.js中提供

    抱歉,我确实在HTML中包含了引号,因此我更新以显示这一点。我的理解是,即使在include标记上,page.html中的javascript也应该可以工作,但事实并非如此。如何获取?打开
    base.html
    时,是否已验证是否包含
    gui/page.html
    的内容?您是否在浏览器中查看源代码以确保javascript存在?根据您使用的URL,Apache(或您的其他服务器)似乎是静态地为文件
    base.html
    提供服务,而不是允许django为文件提供服务,在这种情况下,模板没有被处理,也不包括
    gui/page.html
    。您的web服务器是如何设置的?很奇怪,所以我使用了
    标记并将内容放入
    js/scripts.js
    文件中,它就可以工作了。听起来您的django应用程序好像没有运行。您需要从django项目目录或mod_wsgi或gunicorn调用
    python manage.py runserver
    ,以运行django项目。你在用这些吗?什么?是,应用程序正在运行。如果它没有运行,我将无法浏览该网站。。。。不管怎么说,它起作用了。正如我所说的,我将脚本放入一个静态文件中,然后从那里加载。奇怪的是,如果我在html模板的标记中有脚本,它就不会加载。你是如何启动Django应用程序的?对我来说不起作用