[python] Django - AJAX & vypisování textového streamu
Martin Stiborský
martin.stiborsky na gmail.com
Úterý Květen 10 22:25:50 CEST 2011
Ahoj,
nevěděl jsem úplně jistě jak tohle vlákno nazvat, tak snad to bude tak
nějak sedět.
Chci v Djangu takovou věc. View provádí nějakou akci a v jejím průběhu
vypisuje textový log o tom, jak mu to jde. Tyhle informace chci
postupně zobrazovat v administraci.
Ono to je celé jenom takový cukr, ale líbilo se mi to jako nápad,
akorát jsem se se na tom docela zaseknul.
Vymyslel jsem něco takového (a nakonec i vygooglil, že samozřejmě
nejsem první :) http://goo.gl/Pdpj0 )...
Takhle vypadá views.py:
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.views.decorators.http import condition
import time
def index(request):
return render_to_response("foo/index.html", {})
@condition(etag_func=None)
def getData(request):
resp = HttpResponse(foo())
return resp
def foo():
for x in range(1, 11):
yield "%s <br/>" % x
time.sleep(1)
A v šabloně mám jednoduchý java script, využívá JQuery…
function getFooData() {
$.ajax({
type: 'POST',
url: 'getData/',
dataType: "json",
success: function(data) {
var $container = $("#messages");
$container.append("Data: " + data);
}
});
setTimeout("getFooData()", 2000);
}
Podobný postup jsem našel různě po internetu, blbé je, že to nefunguje
tak, jak si představuju. Když to spustím, tak django na konzoli píše u
/getData/ html kód 403/Forbidden...
Myslel jsem, že je něco shnilého v django-nonrel, se kterým si hraju
na google app engine, tak jsem to otestoval na django 1.3 a
nefungovalo to úplně stejně :)
Pokud máte někdo nápad, kde je problém, nebo proč je to principiálně
blbě, dejte vědět.
Děkuji.
--
S pozdravem
Martin Stiborský
Jabber: stibi na njs.netlab.cz
Další informace o konferenci Python