Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yceruto/django-ajax
Fast and easy AJAX libraries for django applications. Contains ajax decorator, ajax middleware, shortcuts and more.
https://github.com/yceruto/django-ajax
ajax django-framework json middleware python
Last synced: 1 day ago
JSON representation
Fast and easy AJAX libraries for django applications. Contains ajax decorator, ajax middleware, shortcuts and more.
- Host: GitHub
- URL: https://github.com/yceruto/django-ajax
- Owner: yceruto
- License: mit
- Created: 2013-07-16T00:16:20.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-04-27T20:52:14.000Z (9 months ago)
- Last Synced: 2025-01-12T21:02:22.913Z (8 days ago)
- Topics: ajax, django-framework, json, middleware, python
- Language: Python
- Homepage:
- Size: 242 KB
- Stars: 322
- Watchers: 30
- Forks: 57
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- Funding: .github/FUNDING.yml
- License: LICENSE
- Authors: AUTHORS.rst
Awesome Lists containing this project
- cuban-opensource - django-ajax
README
===========
django-ajax
===========Fast and easy AJAX libraries for django applications.
.. image:: https://api.travis-ci.com/yceruto/django-ajax.svg?branch=master
:alt: Master Build Status
:target: https://travis-ci.com/github/yceruto/django-ajax
.. image:: https://img.shields.io/pypi/v/djangoajax.svg
:alt: PYPI Package
:target: https://pypi.python.org/pypi/djangoajax
.. image:: https://img.shields.io/pypi/status/django-ajax.svg
:alt: PYPI Status
:target: https://pypi.python.org/pypi/djangoajax
.. image:: https://img.shields.io/pypi/l/djangoajax.svg
:alt: PYPI License
:target: https://pypi.python.org/pypi/djangoajaxRequirements
------------``3.x``
* `python`_ >=3.5
* `django`_ >=2.0``2.x``
* `python`_ >=2.7
* `django`_ >=1.7,<2.0.. _`python`: http://www.python.org/
.. _`django`: https://djangoproject.com
.. _`jQuery`: http://jquery.comInstallation
------------Install django-ajax in your python environment
1- Download and install package:
.. code:: sh
$ pip install djangoajax
Through Github:
.. code:: sh
pip install -e git://github.com/yceruto/django-ajax#egg=djangoajax
or simply with:
.. code:: sh
$ python setup.py install
2- Add ``'django_ajax'`` into the ``INSTALLED_APPS`` list.
3- Read usage section and enjoy this feature!
Usage
-----@ajax Decorator
~~~~~~~~~~~~~~~.. code:: python
from django_ajax.decorators import ajax
@ajax
def my_view(request):
do_something()
When the view does not return anything, you will receive this response (JSON format):.. code:: javascript
{"status": 200, "statusText": "OK", "content ": null}
**Sending content**
.. code:: python
@ajax
def my_view(request):
c = 2 + 3
return {'result': c}
The whole result is converted into a JSON format as part of the `content` element:.. code:: javascript
{"status": 200, "statusText": "OK", "content": {"result": 5}}
**Combining with others decorators**
.. code:: python
from django.contrib.auth.decorators import login_required
from django_ajax.decorators import ajax@ajax
@login_required
def my_view(request):
# if the request.user is anonymous then this view not proceed
return {'user_id': request.user.id}
The location or path of the redirection response will be given in the `content` item,
also the `status` and `statusText` will reflect what is going on:.. code:: javascript
{"status": 302, "statusText": "FOUND", "content": "/login"}
**Template response**
.. code:: python
from django.shortcuts import render
from django_ajax.decorators import ajax@ajax
def my_view(request):
return render(request, 'home.html')The JSON response:
.. code:: javascript
{"status": 200, "statusText": "OK", "content": "..."}
**Catch exceptions**
.. code:: python
@ajax
def my_view(request):
a = 23 / 0 # this line throws an exception
return aThe JSON response:
.. code:: javascript
{"status": 500, "statusText": "INTERNAL SERVER ERROR", "content": "integer division or modulo by zero"}
AJAXMiddleware
~~~~~~~~~~~~~~If you are using AJAX at all times in your project, we suggest you activate the AJAXMiddleware described below.
Add ``django_ajax.middleware.AJAXMiddleware`` to the ``MIDDLEWARE_CLASSES`` list in ``settings.py`` and all your responses will be converted to JSON whereas the request was made via AJAX, otherwise it will return a normal HttpResponse.
.. caution:: If this middleware is activated you cannot use the ``@ajax`` decorator. That will cause double JSON conversion.
AJAXMixin for class-based views
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``AJAXMixin`` is an object that call to AJAX decorator.
.. code:: python
from django.views.generic import TemplateView
from django_ajax.mixin import AJAXMixinclass SimpleView(AJAXMixin, TemplateView):
template_name = 'home.html'The JSON response:
.. code:: javascript
{"status": 200, "statusText": "OK", "content": "..."}
Enjoy And Share!