Nasıl Django uygulamaları ile Ajax entegre edebilirim?
Ajax ve güzel yeni yeni Django ediyorum. İki entegre etmek için gereken bir proje üzerinde çalışıyorum. Arkalarında ilkelerini de anlıyorum, ama iki iyi bir açıklama bulamadı beraber inanıyorum.
Biri bana kod iki değişimin nasıl hızlı bir açıklama vermek onları bir arada entegre olabilir?
Örneğin, hala Ajax ile HttpResponse
kullanabilir miyim, ya da benim yanıtları Ajax kullanımı ile değişmek zorunda? Eğer öyleyse, bu isteklere yanıt değişimin nasıl örnek verir misiniz? Eğer bir önemi varsa, dönüyorum verileri JSON.
CEVAP
Bu YÜZDEN ruhu tamamen olmasa bile, bu soruyu seviyorum, sen hızlı bir kılavuz veririm yani başladığımda aynı sorun vardı çünkü. Belli ki arkalarında ilkeleri (hakaret olarak almayın, ama eğer sen yaptıysan soran olmaz) anlamıyorsun.
Django sunucu tarafı. Bunun anlamı, bir istemci ve html bir tepki görüyor verir ne işler görünümleri içinde bir işlevi var url ediyor diyor. hadi örneklere Yukarı fren:
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'),
İşte bir örnek en basit kullanımlar Gidiyor '127.0.0.1:8000/Merhaba" anlamına gelen bir isteme Merhaba işlevi, '127.0.0.1:8000/home' döndürecektir index.html ve yerine tüm değişkenleri sordu (muhtemelen bildiğiniz tüm bu şimdiye kadar).
Şimdi gelelim ajax hakkında konuşmak. AJAX çağrıları tarafı istemci istekleri zaman uyumsuz mu bu kod. Bu karmaşık geliyor, ama bu sadece arka planda sizin için bir istek ve yanıt işler anlamına gelir. Bazı url için bir AJAX çağrısı yaparken, bir kullanıcı şu yere kadar alacağı aynı verileri elde edebilirsiniz.
örneğin, bir ajax çağrısı '127.0.0.1:8000/Merhaba Eğer ziyaret eğer olduğu gibi aynı şeyi dönecektir. Sadece bu sefer, js fonksiyonu içindedir ve ancak onunla başa çıkabilirim. Haydi kullanımı oldukça basit bak:
$.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ç bu
- çağrı url '127.0.0.1:8000/Merhaba yeni bir sekme açıldı ve kendin yapmış gibi gidiyor
- Eğer başarılı olursa (durum kodu 200), verileri aldı uyaracaktır bir başarı fonksiyonu yok.
- Farklı bir işlev başarısız olursa
Şimdi burada ne olacak? 'Merhaba Dünya'. bir uyarı olacaktı Eğer ev için bir ajax arama yaparsanız ne olur? Aynı şey, bir uyarı <h1>Hello world, welcome to my awesome site</h1>
belirten alacaksın.
Diğer bir deyişle, yeni bir şey yok AJAX çağrıları hakkında. Sadece kullanıcı sayfayı terk etmeden veri ve bilgi almak için bir yoldur, ve web sitenizin sorunsuz ve çok temiz bir tasarım için yapar. Dikkate almanız gereken bazı kurallar vardır:
- jQuery öğrenmek. Ne kadar vurgulasam az. Biraz aldığınız verileri işlemek için nasıl bilmek anlamak zorundasın. Ayrıca bazı temel javascript sözdizimi (python uzak değil, alışırsın) anlamak gerekir. Ben güçlü Envato's video tutorials for jQuery büyük ve doğru yolda size koyacağız tavsiye ederim.
- JSON kullanmak ne zaman?. Veri django görünümleri tarafından gönderilen JSON içinde bulunduğu pek çok örneği görmek için gidiyoruz. Önemli değil çünkü bu konuda ayrıntıya girmek istemedimnasılbunu yapmak için (açıklamalar bol bol var) ve çok daha önemline zaman. Ve veri JSON yanıtı Seri Veri. Bu, veri işleyebilirsiniz. Belirttiğim gibi, bir AJAX çağrısı kullanıcı kendisi yapmış gibi tepki almak olacaktır. Şimdi tüm html uğraşmak istemediğini söylüyor, ve bunun yerine veri (nesnelerin listesini belki) göndermek istiyorum. JSON için iyidir bu, çünkü gönderdiği bir nesne (JSON veri benziyor python sözlük), ve daha sonra üzerinde yineleme ya da başka bir şey yap o kaldırır ihtiyacı için elemek işe yaramaz html
- Geçen ekleyin. Bir web uygulaması oluşturmak ve AJAX uygulamak istedikleri zaman kendinize bir iyilik yapın. İlk olarak, tüm uygulama herhangi bir AJAX tamamen yoksun oluştur. Her şey çalışıyor. Sonra, ve ancak o zaman, AJAX çağrıları yazmaya başlayın. O seni çok iyi öğrenmek için yardım eden iyi bir süreç.
- Chrome geliştirici araçları kullanın. AJAX çağrıları arka planda yapıldığı için bazen çok zor hata ayıklama için. Chrome Geliştirici Araçları (veya firebug gibi benzeri araçlar) ve
console.log
şey hata ayıklamak için kullanmanız gerekir. Ayrıntılı olarak, etrafında google ve bunun sadece bir açıklama yapmayacağım. Sizin için çok yararlı olacaktır - csrf farkındalık. Son olarak, django post istekleri csrf_token gerektirir unutmayın. AJAX çağrıları ile, sayfa yenilenmeden veri yollamak istediğiniz bir çok kez. Muhtemelen sonunda hatırlayacağını önce bazı sorunlar karşısında olacak - bekle, csrf_token unuttuğun. Bu bir başlangıç-barikat AJAX-django entegrasyon olarak bilinen, ama hoş bir oyun yapmak için nasıl öğrendikten sonra, bu çocuk oyuncağı.
Bu başıma gelen her şeyi. Bu çok geniş bir konu, ama evet, muhtemelen yeterince örnek yok. Sadece yol çalışması, yavaş yavaş, sonunda senin de olacak.
Nasıl Apache Clojure Web Uygulamaları ...
Django, nasıl eğer bir kullanıcı belir...
Nasıl JSON verilerini kullanarak gönde...
Nasıl AJAX ile django form POST & jQue...
Nasıl Facebook tarayıcıyı devre dışı b...