{ "info": { "author": "Filip Wasilewski", "author_email": "en@ig.ma", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.8", "Framework :: Django :: 1.9", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Easy PJAX for Django\n====================\n\nEnhance the browsing experience of Django sites.\n\n.. image:: https://secure.travis-ci.org/nigma/django-easy-pjax.svg?branch=master\n :target: https://secure.travis-ci.org/nigma/django-easy-pjax\n :alt: Build Status\n.. image:: https://img.shields.io/pypi/v/django-easy-pjax.svg\n :target: https://pypi.python.org/pypi/django-easy-pjax/\n :alt: Latest Version\n.. image:: https://img.shields.io/pypi/dm/django-easy-pjax.svg\n :target: https://pypi.python.org/pypi/django-easy-pjax/\n :alt: Downloads\n.. image:: https://img.shields.io/badge/wheel-yes-green.svg\n :target: https://pypi.python.org/pypi/django-easy-pjax/\n :alt: Wheel\n.. image:: https://img.shields.io/pypi/l/django-easy-pjax.svg\n :target: https://pypi.python.org/pypi/django-easy-pjax/\n :alt: License\n\nDeveloped at `en.ig.ma software shop `_.\n\nWhat is PJAX?\n-------------\n\nPJAX utilizes pushState and Ajax to load HTML from the server into the current\npage without a full reload. It's Ajax with real permalinks, page titles,\nand a working back button that fully degrades.\n\n`Check out the demo `_ that illustrates this concept\nin practice and take a look at docs of `jquery-pjax`_ to get more information.\n\nThe ``django-easy-pjax`` app is a helper that makes it easy to integrate\n``jquery-pjax`` with your Django 1.5+ site.\n\nQuick Start\n-----------\n\nFirst include ``django-easy-pjax==1.3`` in your ``requirements.txt`` file,\nadd ``easy_pjax`` to your ``INSTALLED APPS`` and make sure you have\n``django.template.context_processors.request`` added to template\n``context_processors``.\n\nIf you are using Django 1.9+, you will also need to add the\n``easy_pjax.templatetags.pjax_tags`` to template ``builtins`` in your\nDjango settings:\n\n.. code-block:: python\n\n TEMPLATES=[\n {\n \"BACKEND\": \"django.template.backends.django.DjangoTemplates\",\n \"DIRS\": [...],\n \"APP_DIRS\": True,\n \"OPTIONS\": {\n \"builtins\": [\n \"easy_pjax.templatetags.pjax_tags\"\n ],\n \"context_processors\": [\n \"django.template.context_processors.request\",\n \"django.template.context_processors.static\",\n ...\n ]\n }\n }\n ]\n\nThen simply add ``|pjax:request`` filter inside your site template ``extends`` tag::\n\n {% extends \"theme_base.html\"|pjax:request %}\n\nThe ``pjax`` filter will decide which layout template should be extended based\non HTTP headers. In the example above it will return ``theme_base.html``\nfor regular requests and ``pjax_base.html`` for PJAX requests.\n\nA generic ``pjax_base.html`` template is provided by this application, but you\nmay need to copy it to your templates root directory and adjust it to match\nyour project's template blocks.\n\nNo other modification to views, code or url configuration is required,\nso integration with other applications shouldn't be a problem.\n\nThe template filter also takes a comma-separated names of `base` and `pjax`\ntemplates as the first parameter::\n\n {% extends \"base.html,pjax_base2.html\"|pjax:request %}\n\nThis is useful if you need to specify another template set.\n\nSee the ``demo.py`` file and ``tests`` directory for working examples.\n\nUnpjax\n------\n\n``jquery-pjax`` uses cache-busting techniques and appends ``_pjax=true``\nto query string params.\n\nIf for some reason you need to remove that param from query strings\nyou can use either the ``easy_pjax.middleware.UnpjaxMiddleware`` to remove it\nfrom all requests before they are passed to Django views, or the ``unpjax``\nfilter to modify urls emitted in templates::\n\n \n\nDocumentation\n-------------\n\nThe full documentation is at `django-easy-pjax.rtfd.org `_.\n\nA live demo is at `easy-pjax.herokuapp.com `_.\nYou can run it locally after installing dependencies by running ``python demo.py``\nscript from the cloned repository.\n\nDjango 1.9\n----------\n\nBefore Django 1.9 the ``easy-pjax`` library used the ``django.template.base.add_to_builtins``\nprivate API to automatically register itself in the template built-ins after it was added\nto the ``INSTALLED_APPS`` list.\nThis workaround was due to the fact that the ``{% load %}`` tag cannot be placed before\nthe ``{% extends %}`` tag and the ``pjax`` template filter could not be loaded explicitly.\n\nStarting from Django 1.9 ``easy-pjax`` does not have to rely on such workarounds because\nDjango now provides a clean way to add filters and tags to template\n`built-ins `_.\nThis is now the recommended and the only way of installing ``easy-pjax`` template tags, also because the\n`add_to_builtins API was removed `_.\n\nThis is a backward incompatible change, but one that makes the integration more explicit and\nfollowing the Zen of Python.\n\nExample of configuration settings to be used starting from Django 1.9:\n\n.. code-block:: python\n\n INSTALLED_APPS = [\n \"easy_pjax\"\n ]\n MIDDLEWARE_CLASSES = [\n \"easy_pjax.middleware.UnpjaxMiddleware\"\n ]\n TEMPLATES = [\n {\n \"BACKEND\": \"django.template.backends.django.DjangoTemplates\",\n \"DIRS\": [],\n \"APP_DIRS\": True,\n \"OPTIONS\": {\n \"builtins\": [\n \"easy_pjax.templatetags.pjax_tags\"\n ],\n \"context_processors\": [\n \"django.template.context_processors.request\",\n ]\n }\n }\n ]\n\nNo changes are required for Django 1.8 or older.\n\nLicense\n-------\n\n``django-easy-pjax`` is released under the BSD license.\n\nOther Resources\n---------------\n\n- GitHub repository - https://github.com/nigma/django-easy-pjax\n- PyPi Package site - http://pypi.python.org/pypi/django-easy-pjax\n\nPlease note that the `jquery-pjax`_ JavaScript library in not bundled with this\napp and you still need to add proper handling to your browser-side code.\n\nCommercial Support\n------------------\n\nThis app and many other help us build better software\nand focus on delivering quality projects faster.\nWe would love to help you with your next project so get in touch\nby dropping an email at en@ig.ma.\n\n\n.. _jquery-pjax: https://github.com/defunkt/jquery-pjax\n\n\n\n\nHistory\n-------\n\n1.3.0 (2016-02-21)\n++++++++++++++++++\n\n* Django 1.9 support (the plugin should be added to ``TEMPLATES[\"OPTIONS\"][\"builtins\"]``\n settings) - `#13 `_\n* Fix handling of non-ascii query strings on Python 2.7 - `#14 `_\n\n1.2.0 (2015-04-23)\n++++++++++++++++++\n\n* Django 1.7/1.8 compatibility (thanks to @scottwoodall)\n\n1.1.0 (2014-01-30)\n++++++++++++++++++\n\n* Refresh code and compatibility\n* Wheel distribution\n* Add demo at http://easy-pjax.herokuapp.com/\n* Drop official support for Django 1.4 (it should still work though)\n\n1.0.0 (2012-05-29)\n++++++++++++++++++\n\n* First release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nigma/django-easy-pjax", "keywords": "django pjax", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "django-easy-pjax", "package_url": "https://pypi.org/project/django-easy-pjax/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-easy-pjax/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/nigma/django-easy-pjax" }, "release_url": "https://pypi.org/project/django-easy-pjax/1.3.0/", "requires_dist": null, "requires_python": null, "summary": "Easy PJAX for Django.", "version": "1.3.0" }, "last_serial": 1968266, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "5c04eb9cd583332550c9d918263cded7", "sha256": "fde93c1197e159df1510df40e176cf48a3f83043685fc9a2c9e948b8e2323513" }, "downloads": -1, "filename": "django-easy-pjax-1.0.zip", "has_sig": false, "md5_digest": "5c04eb9cd583332550c9d918263cded7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10094, "upload_time": "2012-05-29T23:22:26", "url": "https://files.pythonhosted.org/packages/3e/de/57a7267df29ee08b56f3bd114321ebafcee6aec1d011b26eead97900fe34/django-easy-pjax-1.0.zip" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "ae369eca32e57dd9cbaf01fc4fc3245d", "sha256": "1e0a6eabf8c934b0efc007b53622e3ec8bd4b9c5bbb96e362b93cbfee0c27a91" }, "downloads": -1, "filename": "django_easy_pjax-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae369eca32e57dd9cbaf01fc4fc3245d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8504, "upload_time": "2014-01-30T21:23:21", "url": "https://files.pythonhosted.org/packages/70/f1/6a61794a1354f7c513a6b2cd9a829c0296b0480483d8b83c9ceb65197c7d/django_easy_pjax-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "966456b2ba36406cf89d112fe844d576", "sha256": "637982a05d52c9e0f64a77b45942ba63c41c42966a15c6c54a70d6820380a919" }, "downloads": -1, "filename": "django-easy-pjax-1.1.0.zip", "has_sig": false, "md5_digest": "966456b2ba36406cf89d112fe844d576", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13404, "upload_time": "2014-01-30T21:23:16", "url": "https://files.pythonhosted.org/packages/d3/47/2220a2a4a4a6d0ded079dd647acb6ed432f0e129c913cac4abd591659247/django-easy-pjax-1.1.0.zip" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "9f265aa27e7c6f71373e0170d539e8f5", "sha256": "382a22406cd300207c1beeeea3625e5dad5dfca1958c7f34422f2ae0f6e1cc96" }, "downloads": -1, "filename": "django_easy_pjax-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9f265aa27e7c6f71373e0170d539e8f5", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 8622, "upload_time": "2015-04-23T23:21:26", "url": "https://files.pythonhosted.org/packages/fd/19/b853383d0495374f645c646a1f6995a982b9be63de3f9bba93fe956563c6/django_easy_pjax-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1488c740859ba778184aa00518321bb6", "sha256": "14da35ff0e6f4c5cdcd424bfcf7552c32254f99cf63b1a9c0cf12fbe47cf38ed" }, "downloads": -1, "filename": "django-easy-pjax-1.2.0.zip", "has_sig": false, "md5_digest": "1488c740859ba778184aa00518321bb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13599, "upload_time": "2015-04-23T23:21:21", "url": "https://files.pythonhosted.org/packages/20/d4/201a631d3bd144f02456f76d64575daf3ac3d3a12206f3a8eaa828f1e4e6/django-easy-pjax-1.2.0.zip" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "10f9ab72d65681a1bc7d8270b2e215a2", "sha256": "b25d653be797fdcc89bbb52ad5c896112d10ce96bca55b91746a6281997982e7" }, "downloads": -1, "filename": "django_easy_pjax-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "10f9ab72d65681a1bc7d8270b2e215a2", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 11846, "upload_time": "2016-02-21T19:32:15", "url": "https://files.pythonhosted.org/packages/61/74/fe5e2c2966051f450322272901a4784330b039c449d568aeee799c75e9ad/django_easy_pjax-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a021984088eb84632e0bc8b09a8fd95", "sha256": "49ec5cf8841e801e459f1f17e2630f46c249f86630a094a668790f3aecc27e5b" }, "downloads": -1, "filename": "django-easy-pjax-1.3.0.tar.gz", "has_sig": false, "md5_digest": "9a021984088eb84632e0bc8b09a8fd95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7355, "upload_time": "2016-02-21T19:31:57", "url": "https://files.pythonhosted.org/packages/1c/5a/7ef7f5f44181c8f600628facfb918a27bdab83aae6ba1336c51447e818b5/django-easy-pjax-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "10f9ab72d65681a1bc7d8270b2e215a2", "sha256": "b25d653be797fdcc89bbb52ad5c896112d10ce96bca55b91746a6281997982e7" }, "downloads": -1, "filename": "django_easy_pjax-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "10f9ab72d65681a1bc7d8270b2e215a2", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 11846, "upload_time": "2016-02-21T19:32:15", "url": "https://files.pythonhosted.org/packages/61/74/fe5e2c2966051f450322272901a4784330b039c449d568aeee799c75e9ad/django_easy_pjax-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a021984088eb84632e0bc8b09a8fd95", "sha256": "49ec5cf8841e801e459f1f17e2630f46c249f86630a094a668790f3aecc27e5b" }, "downloads": -1, "filename": "django-easy-pjax-1.3.0.tar.gz", "has_sig": false, "md5_digest": "9a021984088eb84632e0bc8b09a8fd95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7355, "upload_time": "2016-02-21T19:31:57", "url": "https://files.pythonhosted.org/packages/1c/5a/7ef7f5f44181c8f600628facfb918a27bdab83aae6ba1336c51447e818b5/django-easy-pjax-1.3.0.tar.gz" } ] }