用于通过ajax延迟加载模板标记的django应用程序

django-lazy-tags的Python项目详细描述


https://img.shields.io/pypi/v/django-lazy-tags.svgDocumentation Statushttps://travis-ci.org/grantmcconnaughey/django-lazy-tags.svghttps://coveralls.io/repos/grantmcconnaughey/django-lazy-tags/badge.svg?branch=master&service=github

一个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-taglazy-tag-spinner-containerlazy-tag-spinner类。

当前限制

  • 不适用于接受上下文的标记。
  • 模板标记参数必须是可序列化的(str、unicode、int、float等)。

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

推荐PyPI第三方库


热门话题
java JAXB封送字符串,具有xml值,且不转义该值   java ModelMapper转换器不工作   java像HH000412或HCANN000001这样的前缀是什么意思?   验证日期输入修复java。lang.numberformatexception错误   当表具有外键时,java Telosys代码生成失败   如何使所有派生类一起只能实例化一个实例的单例抽象基类?(爪哇)   java如何在非静态服务类中使用广播接收器   java nutch爬虫相对URL问题   使用Jboss DMR下载/保存java附件   Rest模板:无法提取响应:当我们得到xml响应时,没有找到适合响应类型的HttpMessageConverter,没有绑定到JAVA对象   java如何编写可扩展窗格/面板/卡的代码   java是在ITreeViewerListener的treeExpanded()之前调用ContentProvider的getChildren()吗?   java将JComponent添加到小程序窗格   java混淆:使用简单逻辑的Flames程序