SORU
30 Temmuz 2009, PERŞEMBE


Nerede'in gelen Django benim isteği JSON veri?

Django/Python ile gelen JSON/Ajax istekleri işlemek için çalışıyorum.

request.is_ajax() istek üzerine True ama yükü JSON veri ile uyumlu olduğu hakkında hiçbir fikrim yok.

request.POST.dir Bu içerir:

['__class__', '__cmp__', '__contains__', '__copy__', '__deepcopy__', '__delattr__',
 '__delitem__', '__dict__', '__doc__', '__eq__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__',
 '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__setattr__', '__setitem__', '__str__', '__weakref__', '_assert_mutable', '_encoding', 
'_get_encoding', '_mutable', '_set_encoding', 'appendlist', 'clear', 'copy', 'encoding', 
'fromkeys', 'get', 'getlist', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 
'keys', 'lists', 'pop', 'popitem', 'setdefault', 'setlist', 'setlistdefault', 'update', 
'urlencode', 'values']

Görünüşe göre anahtarları post isteği içinde anahtar var.

Firebug, POST baktığımda JSON veri isteği gönderdi.

CEVAP
11 HAZİRAN 2010, Cuma


Eğer JSON Django için paylaşacaksanız, request.body bence (Django <request.raw_post_data; 1.4). Bu ham JSON verileri post ile gönderilen verecektir. Oradan başka bir işlem yapabilirsiniz.

İşte bir örnek JavaScript, jQuery, DV-json ve Django kullanarak.

JavaScript:

var myEvent = {id: calEvent.id, start: calEvent.start, end: calEvent.end,
               allDay: calEvent.allDay };
$.ajax({
    url: '/event/save-json/',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: $.toJSON(myEvent),
    dataType: 'text',
    success: function(result) {
        alert(result.Result);
    }
});

Django:

def save_events_json(request):
    if request.is_ajax():
        if request.method == 'POST':
            print 'Raw Data: "%s"' % request.body   
    return HttpResponse("OK")

Django < 1.4:

  def save_events_json(request):
    if request.is_ajax():
        if request.method == 'POST':
            print 'Raw Data: "%s"' % request.raw_post_data
    return HttpResponse("OK")

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bratayley

    Bratayley

    30 Aralık 2010
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009
  • Paste Magazine

    Paste Magazi

    28 AĞUSTOS 2008