django:无法将jQuery库导入扩展模板

时间:2010-12-25 16:11:33

标签: jquery django

我有一个 base.html 模板,该模板由其他模板(即 user_profile.html 页面)继承,如下所示:{% extends "base.html" %}

问题是jquery库仅对 base.html 模板可见。放置在 user_profile.html 模板中的jQuery(document).ready(function())内的代码无法运行。

如果我在 user_profile.html 模板中放置jQuery库的第二个导入标记,则ready()函数中自己的jQuery运行正常,但 > base.html 看不到自己的jQuery ready()代码(尽管那里也有初始导入标记)。

这就是我使用的:<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

(希望以上所有内容都有道理。)

我做错了什么?

- 编辑 -

这是base.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB">
<head>
    <title>{% block title %} {% endblock %}</title>

    <!-- remote apis first -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script src="http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js"></script>

    <!-- then local -->
    <script src="/site_media/js/ui/jquery.ui.core.js"></script>

    <script type="text/javascript">
        jQuery(document).ready(function(){
            alert('it works!'); //this alert popups normally
        });
    </script>

    {% block external %} {% endblock %}
</head>
<body id="body">
    <div id="wrap">

    <!--  same stuff for all templates is going on here -->

        <div id="content">
            <!-- main content area, different for each template-->
            <div class="main">
                 {% block maincontent %} {% endblock %}
            </div>
        </div>
    </div> <!-- wrapper -->

    {etc...}

这是user_profile.html

{% extends "base.html" %}
{% load my_tags %}
{% block title %}User Home{% endblock %}

<!-- following block is inside the <head> of the base.html -->
{% block external %} 
    <link rel="stylesheet" href="/site_media/css/maps.css" type="text/css" media="screen" />
    <script type="text/javascript">
        jQuery(document).ready(function(){
            alert('hi!'); // it is never reached!
        });

    </script>
{% endblock %}

{% block maincontent %}
    <!-- stuff is going on here -->
{% endblock %}

3 个答案:

答案 0 :(得分:0)

尝试

$(document).ready

我假设base.html下面有更多内容,即阻止def为maincontent吗?另外,查看firebug,它非常适合调试js和其他Web内容。

答案 1 :(得分:0)

解决了:

似乎如果初始模板的jQuery ready()函数中存在错误(由其他模板扩展的那个),那么其所有子模板的jQuery ready函数()都不会运行。

这是错误 http://www.dynamicdrive.com/forums/showthread.php?t=44999

答案 2 :(得分:0)

在我的情况下,进一步出现错误(未找到对.js文件的调用)。这在dev中不是问题,但是当它转移到生产环境时,在我删除了错误的呼叫之后它就无法工作。