用于通过ajax延迟加载模板标记的django应用程序
django-lazy-tags的Python项目详细描述
一个django应用程序,通过ajax轻松加载模板标记。
安装
一。通过PIP安装
pipinstalldjango-lazy-tags
2.添加到已安装的应用程序
INSTALLED_APPS=(# ...'lazy_tags',)
三。将惰性标记url添加到根urlconf。
urlpatterns=patterns('',# ...url(r'^lazy_tags/',include('lazy_tags.urls')),)
用法
首先,在模板中加载lazy_tags库。
{%loadlazy_tags%}
然后,调用lazy_tagtemplate标记,将标记名作为第一个参数传递。格式是tag_library.tag_name,其中tag_library是页面顶部要加载的内容(例如my_tags),而tag_name是模板标记的名称(例如my_template_tag)。在lazy_tag的第一个参数之后,只需将其余的参数和kwarg传递给自己的标记。
这个:
{%loadmy_tags%}{%my_template_tagarg1arg2kw1='hello'kw2='world'%}
变成这样:
{%loadlazy_tags%}{%lazy_tag'my_tags.my_template_tag'arg1arg2kw1='hello'kw2='world'%}
在模板中放置模板标记之后,仍然需要指定ajax javascript输出到页面的位置。这就是lazy_tags_js标记的用途:
{%blockjs-additional%}{%lazy_tags_js%}{%endblock%}
这将抛出运行ajax所需的javascript。javascript将根据您的LAZY_TAGS_AJAX_JS设置进行更改。
懒散的标记装饰器
django lazy标记还包括一个decorator,可以在使用simple_tag的模板标记上使用。使用lazy_tagdecorator时,您可以使用与以前完全相同的模板标记,它们将使用ajax。
fromlazy_tags.decoratorsimportlazy_tag@register.simple_tag@lazy_tagdefshow_user(pk):user=User.objects.get(pk=pk)returnrender_to_string('user/show_user.html',{'user':user,})
这种方法有一些注意事项。首先,decorator当前只处理使用simple_tag的标记。希望将来可以与inclusion_tag一起使用。其次,lazy_tagdecorator必须在simple_tagdecorator之后。
设置
- 惰性标记ajax js
- 用于运行ajax的库。选项是'javascript'、'jquery'或'prototype'。默认为'jquery'。
- 惰性标记缓存超时
- 每个延迟标记缓存的超时。默认为60(秒)。
- 惰性标记错误消息
- 如果ajax请求失败将显示的错误消息。默认为'An error occurred.'
自定义加载动画
这是ajax请求完成之前页面上的默认html:
<divid="{{ tag_id }}"class="lazy-tag"><divclass="lazy-tag-spinner-container"style="width: 100%; text-align: center;"><imgid="{{ tag_id }}-spinner"class="lazy-tag-spinner"style="width: 15px; height: 15px;"src="{static_url}img/lazy_tags/spinner.gif"/></div></div>
要自定义加载动画,请重写css中的lazy-tag、lazy-tag-spinner-container或lazy-tag-spinner类。
当前限制
- 不适用于接受上下文的标记。
- 模板标记参数必须是可序列化的(str、unicode、int、float等)。