2014-01-15 83 views
0

JS控件我有一个谷歌地图“小部件”,包括HTML,CSS和JavaScript将需要无处不在这张地图使用。因此,我正在寻找一种方法将这些组件提取到一个像Widget这样的小部件中,并且只要将此文件包含在我想要使用该映射的任何位置即可。包括HTML,CSS,在Django HTML模板

我已经考虑:

  • 使得三个部分组成三个单独的文件包括在内。这是我现在回退的解决方案,因为我希望它只是一个文件。

  • 包括在报头中的CSS和JavaScript,然后使用JavaScript来将所需的HTML添加到页面上存在的元素。这看起来像一个黑客解决方案,它会做客户端,因为它会比如果HTML包含在服务器端更慢。

  • 以及针对此问题提出的解决方案: How to include plug-n-play widget statics [CSS/JS] without repetition?但是像问这个问题的人,我想要一个比简单创建新基本模板更好的解决方案。

我以前的尝试包括创建与所需的代码和一个html文件{%包括“地图-widget.html”%}在这两个报头,并在所需的位置。在两次尝试中都表示,小部件中包含的google api不存在。

我运行的Python 2.7和Django的1.5.4。

+0

如果有人有兴趣或绊倒在这以后,我结束了3会包括一个对CSS,一个JS,一个用于HT毫升。我让我的js包含一个html文件,以便它可以包含所有适当的谷歌库。 – Rick

回答

0

你可以把HTML,CSS,JS在该项目的基本模板,然后它会在你的页面的存在。下面是Django的文档展示了如何:

http://www.djangobook.com/en/2.0/chapter04.html

对CSS的一个典型的实现/ JS是这样的:

<!-- Your base.html file --> 

{% block static %} 

    Your CSS Files go here 

{% endblock static %} 

{% block content %} 

    This can be a default value, but otherwise your template will override it 

{% endblock content %} 

{% js block %} 

    Your JS files/links 

{% endblock js %} 

现在只延长你的base.html文件的模板,它会继承所有在该CSS/JS文件

<!-- myTemplate.html --> 

{% extends "base.html" %} 

{% block content %} 

    Your Google Map content, etc... 

{% endblock content %} 
+0

与问题是,虽然地图是在几个不同的地方使用它甚至还未接近一半的网站上使用。因此,让每个页面加载css和js似乎是一种不好的做法,因为2或3页将会使用它。 – Rick

+0

你可以有多个base.html模板。因此,只需制作一个单独的基本模板,例如“base_map.html”,即为具有地图的页面,这样CSS/JS只能被这些模板继承。 –