django的简单pjax。

django-easy-pjax的Python项目详细描述


提升django网站的浏览体验。

Build StatusLatest VersionDownloadsWheelLicense

en.ig.ma software shop开发。

什么是pjax?

pjax利用pushstate和ajax将html从服务器加载到当前 页面没有完全重新加载。它是ajax,有真正的永久链接,页面标题, 以及一个完全退化的后退按钮。

Check out the demo说明了这个概念 在实践中,查看jquery-pjax的文档以获取更多信息。

django-easy-pjax应用程序是一个帮助程序,它使集成变得容易 jquery-pjax与您的django 1.5+网站。

快速启动

首先在requirements.txt文件中包含django-easy-pjax==1.3, 将easy_pjax添加到INSTALLED APPS中,并确保 django.template.context_processors.request已添加到模板 context_processors

如果您使用的是django 1.9+,则还需要添加 easy_pjax.templatetags.pjax_tags到模板builtins中 django设置:

TEMPLATES=[{"BACKEND":"django.template.backends.django.DjangoTemplates","DIRS":[...],"APP_DIRS":True,"OPTIONS":{"builtins":["easy_pjax.templatetags.pjax_tags"],"context_processors":["django.template.context_processors.request","django.template.context_processors.static",...]}}]

然后只需在站点模板中添加|pjax:request过滤器extends标记:

{% extends "theme_base.html"|pjax:request %}

pjax筛选器将决定应基于哪个布局模板进行扩展 在http头上。在上面的例子中,它将返回theme_base.html 对于常规请求和pjax_base.html对于pjax请求。

这个应用程序提供了一个通用的pjax_base.html模板,但是 可能需要将其复制到您的模板根目录并调整它以匹配 项目的模板块。

不需要对视图、代码或url配置进行其他修改, 因此,与其他应用程序的集成不应该是一个问题。

模板过滤器还采用逗号分隔的名称basepjax 模板作为第一个参数:

{% extends "base.html,pjax_base2.html"|pjax:request %}

如果需要指定另一个模板集,这将非常有用。

有关工作示例,请参见demo.py文件和tests目录。

UNPJAX

jquery-pjax使用缓存破坏技术并附加_pjax=true 查询字符串参数。

如果出于某种原因需要从查询字符串中删除该参数 您可以使用easy_pjax.middleware.UnpjaxMiddleware来删除它 在将所有请求传递给django视图之前,或从unpjax 用于修改模板中发出的URL的筛选器:

<a href="{{ request.get_full_path|unpjax }}">

文档

完整的文档位于django-easy-pjax.rtfd.org

现场演示在easy-pjax.herokuapp.com。 通过运行^{tt23},可以在安装依赖项后在本地运行它$ 来自克隆存储库的脚本。

django 1.9

在django 1.9之前,easy-pjax库使用了django.template.base.add_to_builtins 用于在添加模板后自动在模板内置程序中注册自身的私有api 到INSTALLED_APPS列表。 这种解决方法是由于{% load  %}标记不能放在 无法显式加载{% extends %}标记和pjax模板筛选器。

从django 1.9开始easy-pjax不必依赖这样的解决方案,因为 django现在提供了一种向模板添加过滤器和标记的干净方法。 built-ins。 现在,这是安装easy-pjaxtemplate标记的推荐和唯一方法,因为 add_to_builtins API was removed

这是一个向后不兼容的更改,但是它使集成更加明确 遵循Python的禅意。

从django 1.9开始使用的配置设置示例:

INSTALLED_APPS=["easy_pjax"]MIDDLEWARE_CLASSES=["easy_pjax.middleware.UnpjaxMiddleware"]TEMPLATES=[{"BACKEND":"django.template.backends.django.DjangoTemplates","DIRS":[],"APP_DIRS":True,"OPTIONS":{"builtins":["easy_pjax.templatetags.pjax_tags"],"context_processors":["django.template.context_processors.request",]}}]

Django 1.8或更高版本不需要更改。

许可证

django-easy-pjax是根据bsd许可证发布的。

其他资源

请注意,jquery-pjaxjavascript库未与此绑定 应用程序和您仍然需要添加正确的处理到您的浏览器端代码。

商业支持

此应用程序和许多其他帮助我们构建更好的软件 专注于更快地交付高质量的项目。 我们很乐意为您的下一个项目提供帮助,请与我们联系 通过在en@ig.ma删除电子邮件。

历史记录

1.3.0(2016-02-21)

  • django 1.9支持(插件应该添加到TEMPLATES["OPTIONS"]["builtins"] 设置)-#13
  • 修复了python 2.7-#14上对非ascii查询字符串的处理

1.2.0(2015-04-23)

  • django 1.7/1.8兼容性(感谢@scottwoodall)

1.1.0(2014-01-30)

1.0.0(2012-05-29)

  • 首次发布

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

推荐PyPI第三方库


热门话题
java如何通过解决错误“活动无法转换为片段”将片段传递给类构造函数?   Java中清理Code39条码数据的regex帮助   将java转换为C++   java无法在Android Studio中生成签名的apk,出现错误   从数学方程出发   MySQL和Java内存问题   如何强制Java抛出算术异常?   java为什么JDBC将零端口视为空(默认)端口?   java如何在没有“changelog主题”的情况下加入KStream和KTable   排序我尝试合并两个排序的数组,但得到的是java。lang.ArrayIndexOutofBounds异常:5无法找出原因   如何在java中求大长度矩阵的逆?   基于maven构建的java生成类路径字符串   java每20个字符分割一个字符串,然后将每个部分打印到控制台   将字符串数字字转换为字符串数字:Java   在特定区域使用混合类型的java填充字节数组   尽管java类在开关块中实例化,但它只能调用接口方法