Dajax odpicuje Django!

Jestem fanem Django. Obiecałem, że opiszę jak odpicować aplikację zrobioną przy użyciu Django. Dzisiaj opiszę jak zaimplementować ajax przy użyciu Dajax (abstrahując to ich logo jest naprawdę dobre). Przechodzimy do rzeczy, opisane krok po kroku jak zainstalować i zaimplementować.
Ja kod dodatkowych aplikacji trzymam w katalogu projektu zamiast je instalować i mogę się do nich odwoływać w settings.py tak samo jakby były zainstalowane. Jest to dla mnie wygodniejsze bo mogę je po prostu przenieść na serwer bez uprzedniej instalacji i tak w tym tutorialu postąpię. Z miłą chęcią posłucham uwag jeśli ktoś robi inaczej bo człowiek całe życie się uczy.

  1. Instalacja Dajaxice
  2. Pobieramy kod ze strony http://github.com/jorgebastida/django-dajaxice/downloads i rozpakowujemy do katalogu z aplikacją. Następnie edytujemy plik settings.py naszego projektu i dodajemy dajaxice do listy aplikacji.

    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.admin',
        'dajaxice',
    ...)

    Następnie upewniamy się, że TEMPLATE_LOADERS w tym samym pliku wygląda tak

    TEMPLATE_LOADERS = (
    	'django.template.loaders.filesystem.load_template_source',
    	'django.template.loaders.app_directories.load_template_source',
    	'django.template.loaders.eggs.load_template_source',
    )

    Ostatni wpis w pliku settings.py wygląda tak

    DAJAXICE_MEDIA_PREFIX="dajaxice"

    Co stworzy nam adres o postaci http://www.domena.pl/dajaxice. Zostawiamy ten plik i przechodzimy do urls.py. Ten wpis nie jest do końca potrzebny, ja go nie posiadam i u mnie działa to bezbłędnie.

    from dajaxice.core import dajaxice_autodiscover
    dajaxice_autodiscover()
    

    Dodajemy linijkę do listy urli aby to mogło zadziałać

    (r'^%s/' % settings.DAJAXICE_MEDIA_PREFIX, include('dajaxice.urls')),

    oraz import

    from django.conf import settings
    

    Koniec instalacji dajaxice. Kolejny element do dajax.

  3. Instalacja Dajax
  4. Kod jest do pobrania ze strony http://github.com/jorgebastida/django-dajax/downloads. Rozpakowujemy i dorzucamy wpis do settings.py.

    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'dajaxice',
        'dajax',
        ...
    )

    Koniec instalacji, teraz przechodzimy do mięsa czyli jak to wszystko zakodować.

  5. KOD
  6. Zakładam, że posiadasz jakąś aplikację w której chcesz dołożyć dajax. W swoim pliku bazowym, tym którego używasz w tagu {%extends%} dołóż dwa dodatkowe tagi (oczywiście, jeśli chcesz korzystać z dobrodziejstw Dajax na wszystkich swoich podstronach)

    {% load dajaxice_templatetags %}

    oraz w head

    {% dajaxice_js_import %}

    a także import wybranego przez Ciebie pliku, w zależności od używanego frameworka js. Może to być jQuery, Prototype, MooTools lub Dojo.
    Import oczywiście należy wsadzić do head. Ja wybrałem jQuery.

    <script src="{{ MEDIA_URL }}/js/jquery.dajax.core.js" type="text/javascript" charset="utf-8"></script>

    Powyższy plik znajduje się w katalogu z instalacją dajax i należy go skopiować do swojego katalogu site_media.
    Już prawie koniec, jedyna rzecz jaka pozostała to napisać trochę kodu pythona odpowiedzialnego za ajax. Autorzy i ja się dołączam do nich radzą cały kod umieszczać w pliku ajax.py. Podam przykład funkcji dodającej dwie liczby, oczywiście możliwości są nieskończone.

    def dodawanie(request, a, b):
        dajax = Dajax()
        result = int(a) + int(b)
        dajax.assign('#koniec','value',str(result))
        return dajax.json()

    dajax.assign przypisze do obiektu DOM o id równym wynik wartość zmiennej result która jest wynikiem funkcji dodawanie. Zachęcam do obejrzenia pliku dajax.core.js, odpowiedniego dla wybranego frameworka aby dowiedzieć się jakie jeszcze funkcje są dostępne.
    Funkcję wywołujemy z poziomu javascript wpisując po prostu

    Dajaxice.aplikacja.funkcja('Dajax.process', {'a': wartosc1, 'b': wartosc2})

    Każda funkcja stworzona przez nas w ajax.py musi znaleźć się w pliku settings.py. W tym wypadku będzie to wyglądać tak:

    DAJAXICE_FUNCTIONS = (
        'aplikacja.ajax.nazwa_funkcji'
    )
    

Koniec. W tym momencie powinieneś wiedzieć jak zaimplementować Dajax i cieszyć się odpicowanym Django. Jeśli nie rozumiesz to ja się nie zdziwię bo kiepski ze mnie nauczyciel. Wszelkie pytania proszę zamieszczać w komentarzach, postaram się na nie odpowiedzieć w miarę moich skromnych możliwości.
Pokój

0 Responses to “Dajax odpicuje Django!”


  • No Comments

Leave a Reply




Performance Optimization WordPress Plugins by W3 EDGE