Bu tamamen SO ruhunda olmasa da, bu soruyu seviyorum, çünkü başladığımda aynı sorun yaşadım, bu yüzden size hızlı bir rehber vereceğim. Açıkçası, onların arkasındaki ilkeleri anlamıyorsunuz (bir suç olarak kabul etmeyin, ama eğer yaparsanız sormazsınız).
Django sunucu tarafındadır . Diyelim ki, bir müşteri bir URL'ye gidiyor, içinde views
gördüklerini işleyen ve HTML'de yanıt döndüren bir fonksiyonunuz var . Örneklere ayıralım:
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'),
Bu, en basit kullanımlara bir örnektir. Gitmek 127.0.0.1:8000/hello
, hello()
işleve yönelik bir istek anlamına gelir , gidiş, tüm değişkenleri istendiği gibi 127.0.0.1:8000/home
döndürür index.html
ve değiştirir (muhtemelen bunları şimdiye kadar biliyorsunuzdur).
Şimdi AJAX hakkında konuşalım . AJAX çağrıları, eşzamansız istekler yapan istemci tarafı kodlardır. Kulağa karmaşık geliyor, ancak arka planda sizin için bir istekte bulunduğu ve ardından yanıtı ele aldığı anlamına geliyor. Dolayısıyla, bazı URL'ler için AJAX çağrısı yaptığınızda, kullanıcının o yere gitmesi ile aynı verileri alırsınız.
Örneğin, bir AJAX çağrısı, 127.0.0.1:8000/hello
ziyaret ettiğiniz gibi geri döndürülecektir. Sadece bu sefer, bir JavaScript işlevi içinde var ve istediğiniz gibi başa çıkabilirsiniz. Basit bir kullanım örneğine bakalım:
$.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');
}
});
Genel süreç şudur:
- Çağrı,
127.0.0.1:8000/hello
yeni bir sekme açıp kendiniz yaptığınız gibi URL'ye gider .
- Başarılı olursa (durum kodu 200), alınan verileri uyaran başarı işlevini yapın.
- Başarısız olursa, farklı bir işlev yapın.
Şimdi burada ne olurdu? İçinde 'merhaba dünya' yazan bir uyarı alırsınız. Eve AJAX çağrısı yaparsanız ne olur? Aynı şey, bir uyarı uyarısı alırsınız <h1>Hello world, welcome to my awesome site</h1>
.
Başka bir deyişle - AJAX çağrıları hakkında yeni bir şey yok. Bunlar, kullanıcının sayfadan ayrılmadan veri ve bilgi almasına izin vermenin bir yoludur ve web sitenizin düzgün ve çok düzgün bir tasarımını sağlar. Dikkat etmeniz gereken birkaç kural:
- JQuery öğrenin . Bunu yeterince vurgulamıyorum. Aldığınız verilerin nasıl ele alınacağını bilmek için biraz anlamanız gerekecek. Ayrıca bazı temel JavaScript sözdizimini de anlamanız gerekir (python'dan çok uzak değil, buna alışacaksınız). Envato'nun jQuery için video eğitimlerini şiddetle tavsiye ediyorum, harikalar ve sizi doğru yola koyacaklar.
- JSON ne zaman kullanılır? . Django görünümleri tarafından gönderilen verilerin JSON'da olduğu birçok örnek göreceksiniz. Bununla ilgili ayrıntılara girmedim, çünkü nasıl yapılacağı önemli değil (bol miktarda açıklama var) ve ne zaman çok daha önemli . Ve bunun yanıtı - JSON verileri serileştirilmiş verilerdir. Yani, manipüle edebileceğiniz veriler. Bahsettiğim gibi, bir AJAX çağrısı yanıtı kullanıcı kendisi yapmış gibi cevap getirecektir. Şimdi tüm html ile uğraşmak istemediğinizi ve bunun yerine veri göndermek istediğinizi (belki de bir nesne listesi) söyleyin. JSON bunun için iyidir, çünkü onu bir nesne olarak gönderir (JSON verileri bir python sözlüğü gibi görünür) ve daha sonra bunu yineleyebilir veya işe yaramaz html yoluyla eleme ihtiyacını ortadan kaldıran başka bir şey yapabilirsiniz.
- Son ekleyin . Bir web uygulaması oluşturduğunuzda ve AJAX'ı uygulamak istediğinizde - kendinize bir iyilik yapın. İlk olarak, tüm uygulamayı tamamen herhangi bir AJAX'tan yoksun olarak oluşturun. Bakın her şey çalışıyor. Sonra ve ancak o zaman AJAX çağrılarını yazmaya başlayın. Bu da çok şey öğrenmenize yardımcı olan iyi bir süreç.
- Chrome'un geliştirici araçlarını kullanın . AJAX çağrıları arka planda yapıldığından bazen hata ayıklamak çok zordur.
console.log
Hata ayıklamak için krom geliştirici araçlarını (veya kundakçı gibi benzer araçları) kullanmanız gerekir . Ben detaylı olarak açıklamayacağım, sadece google çevresinde ve hakkında bilgi. Size çok yardımcı olur.
- CSRF farkındalığı . Son olarak, Django'daki gönderi isteklerinin
csrf_token
. AJAX çağrılarıyla, sayfayı yenilemeden birçok kez veri göndermek istersiniz. Sonunda bunu hatırlamadan önce muhtemelen bir sorunla karşılaşacaksın - bekle, göndermeyi unuttun csrf_token
. Bu, AJAX-Django entegrasyonunda bilinen bir başlangıç barikatıdır, ancak nasıl güzel oynandığını öğrendikten sonra, pasta kadar kolaydır.
Kafama gelen her şey bu. Bu çok geniş bir konu, ama evet, muhtemelen yeterince örnek yok. Sadece oraya doğru çalış, yavaş yavaş, sonunda alacaksın.