Creating custom decorators for your views
Let's restrict your AJAX views to allow only requests generated via AJAX. The Django request object provides an is_ajax()
method that checks whether the request is being made with XMLHttpRequest
, which means that it is an AJAX request. This value is set in the HTTP_X_REQUESTED_WITH
HTTP header, which is included in AJAX requests by most JavaScript libraries.
Next, you will create a decorator for checking the HTTP_X_REQUESTED_WITH
header in your views. A decorator is a function that takes another function and extends the behavior of the latter without explicitly modifying it. If the concept of decorators is foreign to you, you might want to take a look at https://www.python.org/dev/peps/pep-0318/ before you continue reading.
Since your decorator will be generic and could be applied to any view, you will create a common
Python package in your project. Create the following directory and files inside the bookmarks
project directory...