这些django templatetags是一种使在某些地方(可能在当前模板或父模板之上)插入“内容”成为可能的技巧。

django-insert-above的Python项目详细描述


它是什么?
----


这些模板标记是一种黑客技术,可以在
某些位置(可能在当前模板或父模板上方)插入"内容"。

ndered,但是把
放在它的右边。使用此技巧,"容器"可能呈现
,这取决于
模板中任何位置(可能在模板之后)的节点生成的上下文中的变量。

这在您经常重用某些模板部件时非常有用。例如显示评论列表和评论提交表单。
我们编写一些模板并将其放入comments.html中。然后每次我们需要注释时,我们只需{%包括"comments.html"%}。
但是如果这个部分需要一些js或css呢?然后我们需要创建
一些comments-jscss.html并覆盖一些{%block head%}。我知道这很不方便。


使用此工具,我们可以直接从comments.html将js和css插入head



motivation
--



1。创建一种方便的方式,将媒体资源包含在html页面的头部。
2.处理资源包括的重复。
3.可以从包含的模板中获取资源。
4.保持不同位置资源包含的顺序。

install
----

1。(必需)在您的设置中的已安装应用程序中添加"在上面插入"。py

2。(可选)将这两行代码添加到项目中肯定会运行
的某个位置。例如,在url.py

~~~~~
from django.template.loader import add_to_builtins
add_to_builtins('insert_above.template tags.insert_tags')
~~~~~

tags&filters
----

<1中。{%insert_handler%}
2。{%container name%}
3。{%media_container name%}
4。{%insert_str container str%}
5。{%insert container%}{%endinsert%}
6。media_tag filter只需将"ga.js"转换为"script type="text/javascript" src='/static/ga.js">;<;/script>;`


restrictions
----

>1。`{%container%}或{%media\u container%}标记不能在其他{%block%}中。
2.`{%insert_handler%}`应该在基模板的最开始处。


variables
--


1。` ia_use_media_prefix`,默认为true
2。`如果未设置,则使用"静态URL";如果未设置,则使用"媒体URL";如果未设置,则使用"/media/"
3。` debug`,如果为true,则记录渲染所花费的时间
4。` ia嫒js嫒u format嫒,默认情况下为`<;script type='text/javascript'src='{url}>;<;/script>;`
5。` ia_css_format`,默认情况下为`<;link rel='stylesheet'ref='{url}'type='text/css'/>;`
6。` ia_media_extension_format_map`,默认情况下为{css':css_format,'.js':js_format}`

示例
----


让我们分析一个示例。






~~~~~~~~~~~~~~~~~~~~~~.html}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
<;lt;script>;
<;lt;script
<;script
><;script==~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(){
{%contai
>
>>
<;lt;br/>>
<;lt;head>;
<;body>;
{%block content%}
{%endblock%>

<;lt;body>;
>>

~~~~

>











~~{.html}
>>{{%ext"基基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基.基"%}

{%block-content%}
{%insert_str media"js/mathjax.js"%}
{%block-header%}{%endblock%}
{%block-menu%}{%include"blog/menu.html"%}{%endblock%}
{%block-text%}{%endblock%}
{%block-footer%}{%endblock%}
~~~~~

正在发送内容块。需要js/mathjax.js资源到"媒体"容器中。


~~~~{.html}
{%insertr media"js/animated.menu.js"%}
{%insert_str media"css/animated.menu.css"%}
{%insert ready%}
$('ul.menu').each(function(){
$(this.supanimation();
{%endinsert%}
<;ul id='blog-menu'class='menu'>;
<;li>;link<;/li>;
<;l我>;链接<;/li>;
<;li>;链接<;/li>;
<;/ul>;
~~~~





{{title}{{title}{{%endblock%}


{{%block text%}
{{%br/>{{%br/>{%n动辄动辄"js/mathjax.js.js"js/mathjax.js"}
{{{{{text}}
{%endblock%}




{{%endblock%{%endblock%}



















因此,如果我们呈现模板('blog/post_detail.html').render(context({'title':'hello','text':'world'}))
我们将得到:

~~~{.html}
<;html>;
<;head>;
<;script>;
<;script type='text/javascript'src='/media/js/jquery.min.js'>;<;/script>;
<;script type='text/javascript'src='/media/js/mathjax.js'>;
<;script type='text/javascript'src='/media/js/animated.menu.js'>;
<;link rel="stylesheet"href="/media/css/animated.menu.css"type="text/css"/>;

$(document.ready(fun{
$('ul.menu')。每个(function(){
$(this.supanimation();
>});
><;br/><;lt;lt;lt;script>;
><;lt;br/><;lt;br/><;lt;br/><;lt;lt;lt;lt;lt;lt;lt;lt;lt;li>;
<;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;li;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;"链接"/li>;
<;ul>;
world
<;hr>;
<;body>;
<;html>;
~~~~


————

1.` js/mathjax.js`自动变为`<;script type='text/javascript'src='/media/js/mathjax.js'>;`
和`css/animated.menu.css`变为`<;link rel="stylesheet"ref="/media/css/animated.menu.css"type="text/css"/>;`
2。可以从包含的模板插入
3。任何文本都可以插入到任何容器中。在这里,我们在`$(document).ready(function(){});`
4中插入javascript代码。` js/mathjax.js`需要两次,但只包含一次。
5.保留包含资源的顺序。


fixtures
--


\1.0.2版

+**修复媒体URL设置**
如果未在设置中设置静态URL,则在Django的新版本中默认为"无"。
现在我们检查静态URL是否为"无",然后使用媒体URL

1.0.4版

+添加了新标记{%insert_form container form%}`
+添加了新标记{%insert_form container form.media%}`

todos


1。测试
2.扩展标签
3。资源膨胀

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
IE中的java跨域cookie问题   重复java中已经满足的循环   编译java RMI服务器时出错   JavaServlet POST中作为参数传递的javascript大型JSON数组数据为空   java片段未每次刷新/调用   java无法编译。错误消息   java如何构造大型类?   java Hibernate:TableThingsDB。事情并不存在   java如何操作从匹配项创建的数组。发现   循环以搜索和显示数组Java的某些部分   加载或注册SQLite JDBC驱动程序时出现java问题   活动和服务之间的java连接   JavaGWTG2D:ie8中的drawImage   java在安卓中设置hessian阈值   在Tomcat中使用Logback时发生java错误