Chociaż nie jest to całkowicie w duchu SO, uwielbiam to pytanie, ponieważ miałem takie same problemy, kiedy zaczynałem, więc dam ci krótki przewodnik. Oczywiście nie rozumiesz zasad leżących u ich podstaw (nie bierz tego za obrazę, ale jeśli byś to zrobił, nie pytałbyś).
Django jest po stronie serwera . To znaczy, powiedzmy, że klient idzie do adresu URL, masz w sobie funkcję, views
która renderuje to, co widzi i zwraca odpowiedź w HTML. Podzielmy to na przykłady:
views.py:
def hello(request):
return HttpResponse('Hello World!')
def home(request):
return render_to_response('index.html', {'variable': 'world'})
index.html:
<h1>Hello {{ variable }}, welcome to my awesome site</h1>
urls.py:
url(r'^hello/', 'myapp.views.hello'),
url(r'^home/', 'myapp.views.home'),
To przykład najprostszego użycia. Przejście do 127.0.0.1:8000/hello
oznacza żądanie do hello()
funkcji, przejście 127.0.0.1:8000/home
zwróciindex.html
i zastąpienie wszystkich zmiennych zgodnie z zapytaniem (prawdopodobnie już to wszystko znasz).
Porozmawiajmy teraz o AJAX . Wywołania AJAX to kod po stronie klienta, który wykonuje żądania asynchroniczne. To brzmi skomplikowanie, ale oznacza to po prostu, że wykonuje zapytanie w tle, a następnie obsługuje odpowiedź. Więc kiedy wykonujesz wywołanie AJAX dla jakiegoś adresu URL, otrzymujesz te same dane, które uzyskałbyś jako użytkownik jadący do tego miejsca.
Na przykład wywołanie AJAX 127.0.0.1:8000/hello
zwróci to samo, co gdybyś go odwiedził. Tylko tym razem masz go wewnątrz funkcji JavaScript i możesz sobie z tym poradzić, jak chcesz. Spójrzmy na prosty przypadek użycia:
$.ajax({
url: '127.0.0.1:8000/hello',
type: 'get', // This is the default though, you don't actually need to always mention it
success: function(data) {
alert(data);
},
failure: function(data) {
alert('Got an error dude');
}
});
Ogólny proces jest następujący:
- Połączenie przechodzi na adres URL
127.0.0.1:8000/hello
, jakbyś otworzył nową kartę i zrobił to sam.
- Jeśli się powiedzie (kod stanu 200), wykonaj funkcję powodzenia, która ostrzeże otrzymane dane.
- Jeśli się nie powiedzie, wykonaj inną funkcję.
Co by się tu stało? Pojawi się ostrzeżenie z „witaj światem”. Co się stanie, jeśli wykonasz połączenie AJAX do domu? To samo, dostaniesz ostrzeżenie<h1>Hello world, welcome to my awesome site</h1>
.
Innymi słowy - nie ma nic nowego w połączeniach AJAX. Są po prostu sposobem na to, aby użytkownik mógł uzyskać dane i informacje bez opuszczania strony, a to zapewnia płynny i bardzo schludny projekt witryny. Kilka wskazówek, które należy wziąć pod uwagę:
- Dowiedz się jQuery . Nie mogę tego wystarczająco podkreślić. Musisz trochę to zrozumieć, aby wiedzieć, jak obsługiwać otrzymywane dane. Musisz także zrozumieć podstawową składnię JavaScript (niedaleko Pythona, przyzwyczaisz się). Zdecydowanie polecam samouczki wideo Envato dla jQuery , są świetne i wprowadzą cię na właściwą ścieżkę.
- Kiedy używać JSON? . Zobaczysz wiele przykładów, w których dane wysyłane przez widoki Django są w JSON. Nie wdałem się w to szczegółowo, ponieważ nie jest ważne, jak to zrobić (jest mnóstwo wyjaśnień) i dużo ważniejsze, kiedy . Odpowiedź brzmi: dane JSON to dane serializowane. To znaczy dane, którymi możesz manipulować. Jak wspomniałem, wywołanie AJAX pobierze odpowiedź tak, jakby użytkownik zrobił to sam. Teraz powiedz, że nie chcesz zadzierać z całym plikiem HTML, a zamiast tego chcesz wysyłać dane (być może listę obiektów). JSON jest do tego dobry, ponieważ wysyła go jako obiekt (dane JSON wyglądają jak słownik Pythona), a następnie możesz iterować nad nim lub zrobić coś innego, co eliminuje potrzebę przesiewania przez bezużyteczny HTML.
- Dodaj to na końcu . Kiedy budujesz aplikację internetową i chcesz wdrożyć AJAX - zrób sobie przysługę. Po pierwsze, zbuduj całą aplikację całkowicie pozbawioną AJAX. Sprawdź, czy wszystko działa. Wtedy i tylko wtedy zacznij pisać wywołania AJAX. To dobry proces, który pomaga ci się dużo nauczyć.
- Użyj narzędzi programistycznych Chrome . Ponieważ wywołania AJAX są wykonywane w tle, czasami bardzo trudno jest je debugować. Powinieneś użyć narzędzi programistycznych chrome (lub podobnych narzędzi, takich jak firebug) i
console.log
rzeczy do debugowania. Nie wyjaśnię szczegółowo, po prostu google i dowiedz się o tym. Byłoby ci bardzo pomocne.
- Świadomość CSRF . Na koniec pamiętaj, że żądania postów w Django wymagają
csrf_token
. W przypadku połączeń AJAX wiele razy chcesz wysyłać dane bez odświeżania strony. Prawdopodobnie napotkasz jakieś problemy, zanim w końcu to pamiętasz - poczekaj, zapomniałeś wysłać csrf_token
. Jest to znana blokada dla początkujących w integracji AJAX-Django, ale kiedy nauczysz się, jak sprawić, by gra była przyjemna, to proste.
To wszystko, co przychodzi mi do głowy. To rozległy temat, ale tak, prawdopodobnie nie ma wystarczająco wielu przykładów. Po prostu pracuj tam, powoli, w końcu to dostaniesz.