Yug*_*dle 2 python django django-templates
背景:
我有一个css
和js
该仅由谷歌地图模板标签中使用,我包括我的模板在那里,曾经需要.
Inside template tag google_map:
...
...
return render_to_string('google_map.html', context)
Run Code Online (Sandbox Code Playgroud)
在里面,google_map.html
我有必要的css
和js
:
<link rel="stylesheet" type="text/css" href="mystyle.css" />
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我有一个包含3个地图的页面,因此有3个调用模板标签.这意味着css和js在同一页面中包含3次.[不应该发生]
现在,我不能在页面的标题中包含这些css和js,因为所有页面都没有这样的地图,所有这些页面上都会成为负担.
我应该怎么做,这样如果一个页面有3个或更多的地图,那么只有一个包含css&js且不重复?
我建议遵循Paul Irish为基于Markup的不引人注目的全面DOM-ready执行引入的模式.这种方法有很多附带的好处,比如封装,命名空间等,但对你来说,主要的好处是基于id或类的条件执行JavaScript <body>
.
因此,在您的基本模板中,将您的<body>
代码更改为以下内容:
<body class="{% block body_class %}{% endblock %}">
Run Code Online (Sandbox Code Playgroud)
然后,对于需要地图的模板,只需:
{% block body_class %}{% if block.super %}{{ block.super }} {% endif %}maps{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这看起来有点复杂,但它所做的只是从为该块设置的任何父模板的值继承.该if
块用于有条件地包括多个类之间所需的空间.
最后,在您的JavaScript中,您只需为文章描述创建"地图"模块,并将所有特定于地图的JS放在那里.
归档时间: |
|
查看次数: |
2862 次 |
最近记录: |