Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Easy PJAX for Django.

Project description

Enhance the browsing experience of Django sites.

What is PJAX?

PJAX utilizes pushState and Ajax to load HTML from the server into the current page without a full reload. It’s Ajax with real permalinks, page titles, and a working back button that fully degrades.

Check ou the demo that illustrates this concept in practice and take a look at docs of jquery-pjax to get more information.

The django-easy-pjax app is a helper that makes it trivial to integrate jquery-pjax with your Django site.

Quick Start

Include django-easy-pjax in your requirements file, add easy_pjax to your INSTALLED APPS and make sure that you have the django.core.context_processors.request added to TEMPLATE_CONTEXT_PROCESSORS.

Then simply add |pjax:request filter inside your site template extends tag:

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

The pjax filter will decide which layout template should be extended based on HTTP headers. In the example above it will return theme_base.html for regular requests and pjax_base.html for PJAX requests.

A generic pjax_base.html template is provided by this application, but you may need to copy it to your templates root directory and adjust it to match your project’s template blocks.

No other modification to views, code or url configuration is required, so integration with other applications shouldn’t be a problem.

The template filter also takes a comma-separated names of base and pjax templates as the first parameter:

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

This is useful if you need to specify another template set.

Unpjax

jquery-pjax uses cache-busting techniques and appends _pjax=true to query string params.

If for some reason you need to remove that param from query strings you can use either the easy_pjax.middleware.UnpjaxMiddleware to remove it from all requests before they are passed to Django views, or the unpjax filter to modify urls emitted in templates:

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

License

django-easy-pjax is released under the BSD license.

Other Resources

Please note that the jquery-pjax JavaScript library in not bundled with this app and you still need to add proper handling to your browser-side code.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-easy-pjax, version 1.0
Filename, size File type Python version Upload date Hashes
Filename, size django-easy-pjax-1.0.zip (10.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page