Python Part¶
Here you’ll find some information on Python part of xross.
Note
Functions described here are located in xross.toolbox.
Operations¶
xross uses operation
term to describe a function which is used for handling a xross request.
Practically any function can be used as an operation
.
- View function:
def my_view_and_op(request, some_id, xross=None):
"""This view could be used both as a separate view,
and xross operation.
If use as an operation:
`request`: is a request from the main view (those are decorated with @xross_view());
`some_id`: is get from your template (namely, by default from `data-xsome_id` attribute
of a page element with `my_view_and_op` id);
`xross`: is a xross handler object. That can contain some useful stuff (e.g stuff in `xross.attrs`
dictionary could be passed with `xross_listen()` -- see below).
NB: This keyword argument may be omitted from operation signature if not used.
"""
...
- Ordinary function:
def my_op_func(some_id):
"""NB: it also could be made to accept `xross` keyword argument
to have access to xross handler object."""
...
- Method (that applies also to class-based views):
from django.views.generic.base import View
class MyView(View):
def my_op_method(self, request):
"""NB: it also could be made to accept `xross` keyword argument
to have access to xross handler object."""
...
xross_view()¶
Arguments: *op_functions
This decorator should be used to decorate those applications views that require xross functionality.
Pass into it the functions (operations) responsible for handling xross requests.
from xross.toolbox import xross_view
@xross_view(my_op_func, my_view_and_op)
def index_page(request):
"""This is our view."""
...
xross_listener()¶
Arguments: **xross_attrs
Has to be put in your views in places when xross handling is expected.
Accepts xross handler attributes as keyword arguments. Those attributes will be available in operation functions
from xross handler object (see notes on xross
keyword argument in Operations section above) in attrs
attribute.
from django.shortcuts import render
from xross.toolbox import xross_view, xross_listener
def my_op_func(some_id, xross=None):
...
item = xross.attrs['that_item'] # `that_item` is passed here from `xross_listener()` (see below)
...
return render(request, 'mytemplates/some.html')
@xross_view(my_op_func)
def index_page(request):
my_item = ... # Imagine we need to get some item data on every request.
# Instruct xross to handle AJAX calls from that moment.
# And make `that_item` available to operation functions.
xross_listener({'that_item': my_item})
...
return render(request, 'mytemplates/index.html')
Debugging¶
While DEBUG in your settings.py is set to True
xross will supply you with useful debugging information
putting error description in every response to bad requests. Use your browser development console to watch it.