Django的简单PJAX。
项目描述
增强Django站点的浏览体验。
由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 配置进行其他修改,因此与其他应用程序的集成不应存在问题。
模板过滤器还接受逗号分隔的 base 和 pjax 模板名称作为第一个参数。
{% 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 许可证下发布。
其他资源
GitHub 存储库 - https://github.com/nigma/django-easy-pjax
PyPi 包站点 - http://pypi.python.org/pypi/django-easy-pjax
请注意,本应用未包含 jquery-pjax JavaScript 库,您仍需要在浏览器端代码中添加适当的处理。
商业支持
本应用和许多其他应用帮助我们构建更好的软件,并专注于更快地交付高质量的项目。我们很乐意帮助您进行下一个项目,请通过发送电子邮件到 en@ig.ma 与我们联系。
历史
1.3.0 (2016-02-21)
1.2.0 (2015-04-23)
Django 1.7/1.8 兼容性(感谢 @scottwoodall)
1.1.0 (2014-01-30)
刷新代码和兼容性
Wheel 分发
停止对 Django 1.4 的官方支持(尽管如此,它仍然可以工作)
1.0.0 (2012-05-29)
首次发布
项目详情
下载文件
下载适合您平台的应用文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。
源分布
构建分布
django-easy-pjax-1.3.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 49ec5cf8841e801e459f1f17e2630f46c249f86630a094a668790f3aecc27e5b |
|
MD5 | 9a021984088eb84632e0bc8b09a8fd95 |
|
BLAKE2b-256 | 1c5a7ef7f5f44181c8f600628facfb918a27bdab83aae6ba1336c51447e818b5 |
django_easy_pjax-1.3.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b25d653be797fdcc89bbb52ad5c896112d10ce96bca55b91746a6281997982e7 |
|
MD5 | 10f9ab72d65681a1bc7d8270b2e215a2 |
|
BLAKE2b-256 | 6174fe5e2c2966051f450322272901a4784330b039c449d568aeee799c75e9ad |