форматировать данные в views.py для ajax - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь использовать это событиеCalendar в django: http://jquery -week-calendar.googlecode.com / svn / trunk / jquery.weekcalendar / full_demo / weekcalendar_full_demo.html

Я полагаю, что сам пишу ajax-коды, но с другой стороны, я новичок в jquery ajax, я хочу отправить данные о событиях, включая startTime, endTime и т. Д., Чтобы показать их в календаре:

    $('#calendar').weekCalendar({
    data: function(callback){
        $.getJSON("{% url DrHub.views.getEvents %}",
                {
                },
                function(result) {
                        callback(result);
                }
            );
        }
    }); 

thisкалендарь получает данные в следующем формате:

  return {
     events : [
        {
           "id":1,
           "start": new Date(year, month, day, 12),
           "end": new Date(year, month, day, 13, 30),
           "title":"Lunch with Mike"
        },
        {
           "id":2,
           "start": new Date(year, month, day, 14),
           "end": new Date(year, month, day, 14, 45),
           "title":"Dev Meeting"
        },
        ...
     ]
  };

как мне отформатировать извлеченные данные из базы данных в представлении getEvents?

Ответы [ 2 ]

1 голос
/ 26 февраля 2012
from django.utils import simplejson

def some_view(request):
    # Build the output -> it's a standard Python dict
    output = {
      "events": [
        {
           "id": 1,
           "start": "2009-05-10T13:15:00.000+10:00",
           "end": "2009-05-10T14:15:00.000+10:00",
           "title":"Lunch with Mike"
        },
      ]
    }

    # With db data you would do something like:
    # events = Event.objects.all()
    # for event in events:
    #     event_out = {
    #         "title": event.title,
    #          # other fields here
    #     }
    #     output['events'].append(event_out)

    # Return the output as JSON
    return HttpResponse(simplejson.dumps(output), mimetype='application/json')
0 голосов
/ 02 октября 2012

Вы можете построить словарь как обычно, просто учтите, что строки для дат не будут интерпретироваться в javascript без обработки.Мой совет заключается в том, чтобы напрямую отправлять интерпретируемые даты, а не строки в формате JavaScript, следующим образом:

from django.utils import simplejson 
import datetime
import time

occ.start = time.mktime(occ.start.timetuple())*1000
occ.end = time.mktime(occ.end.timetuple())*1000

event = {'id': occ.id,'title':occ.title,'start':occ.start,'end':occ.end,'body':occ.description,'readOnly': '%r' %occ.read_only,'recurring':'%r' % occ.recurring,'persisted': '%r' % occ.persisted,'event_id':occ.event.id}

mimetype = 'application/json'
return HttpResponse(simplejson.dumps(event),mimetype)

учтите, что календарь ожидает ключ 'events', так:

$.getJSON(url, function(data){
                res = {events:data};
                //alert(JSON.stringify(res, null, 4));
                callback(res);
            });

Если выобработка преференций на стороне javascript, попробуйте библиотеку datejs , которая может конвертировать дату из текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...