跳转到主要内容

Django的简单PJAX。

项目描述

增强Django站点的浏览体验。

Build Status Latest Version Downloads Wheel License

en.ig.ma软件商店开发。

什么是PJAX?

PJAX利用pushState和Ajax从服务器加载HTML到当前页面,而无需完全重新加载。这是具有真实永久链接、页面标题和工作返回按钮的Ajax,且完全降级。

查看演示,以了解此概念在实际中的应用,并查看jquery-pjax的文档以获取更多信息。

django-easy-pjax应用程序是一个辅助工具,可轻松将jquery-pjax集成到您的Django 1.5+站点中。

快速入门

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

如果您使用的是 Django 1.9 及以上版本,您还需要将 easy_pjax.templatetags.pjax_tags 添加到 Django 设置中的模板 builtins

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",
                ...
            ]
        }
    }
]

然后在您的站点模板的 extends 标签内简单地添加 |pjax:request 过滤器。

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

pjax 过滤器将根据 HTTP 头决定应扩展哪个布局模板。在上面的示例中,对于常规请求返回 theme_base.html,对于 PJAX 请求返回 pjax_base.html

该应用程序提供了一种通用的 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 从所有请求中删除它,或者使用 unpjax 过滤器修改模板中发出的 URL。

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

文档

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

现场演示位于 easy-pjax.herokuapp.com。安装依赖关系后,您可以从克隆的存储库中运行 python demo.py 脚本来本地运行它。

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 现在提供了一种干净的方法来向模板内置项添加过滤器。这是推荐且唯一安装 easy-pjax 模板标签的方法,也因为它已移除 add_to_builtins API

这是一个向后不兼容的更改,但它使集成更明确,并遵循 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-pjax JavaScript 库,您仍需要在浏览器端代码中添加适当的处理。

商业支持

本应用和许多其他应用帮助我们构建更好的软件,并专注于更快地交付高质量的项目。我们很乐意帮助您进行下一个项目,请通过发送电子邮件到 en@ig.ma 与我们联系。

历史

1.3.0 (2016-02-21)

  • Django 1.9 支持(插件应添加到 TEMPLATES["OPTIONS"]["builtins"] 设置) - #13

  • 在 Python 2.7 上修复非 ASCII 查询字符串的处理 - #14

1.2.0 (2015-04-23)

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

1.1.0 (2014-01-30)

  • 刷新代码和兼容性

  • Wheel 分发

  • http://easy-pjax.herokuapp.com/ 添加演示

  • 停止对 Django 1.4 的官方支持(尽管如此,它仍然可以工作)

1.0.0 (2012-05-29)

  • 首次发布

项目详情


下载文件

下载适合您平台的应用文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分布

django-easy-pjax-1.3.0.tar.gz (7.4 kB 查看哈希值)

上传时间 源代码

构建分布

django_easy_pjax-1.3.0-py2.py3-none-any.whl (11.8 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误记录 StatusPageStatusPage 状态页