Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 25, 2013 14:38:36

gonnpkf
Зарегистрирован: 2013-04-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Json b django

Добрый день.
Пытаюсь прикрутить jtable к django, и пока безуспешно. Dj 1.5, py 3.3, локалка.
В таблицу строки должны подгружаться через ajax и json. Вид последнего должен быть специфическим относительно стандартного вывода django. А именно

{
 "Result":"OK",
 "Records":[
  {"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"},
  {"PersonId":2,"Name":"Douglas Adams","Age":42,"RecordDate":"\/Date(1320259705710)\/"},
  {"PersonId":3,"Name":"Isaac Asimov","Age":26,"RecordDate":"\/Date(1320259705710)\/"},
  {"PersonId":4,"Name":"Thomas More","Age":65,"RecordDate":"\/Date(1320259705710)\/"}
 ]
}

Соответственно, нужно получить json подобного вида.
Пример кода найден в интернете, но, к сожалению, не работает на текущих версиях. Ошибка: ‘QuerySet’ object does not support item assignment . Попытки создать альтернативные словари и списки приводят к ошибке сериализации Json. Помогите, пожалуйста, решить эту проблему.
def AjaxHendler(request, type, *args, **kwargs):
    data = get_object_list(request)
    datares = alter_list_data_to_serialize(request, data)
    response = HttpResponse()
    response['Content-Type'] = "text/javascript"
    response.write(serializers.serialize("json", datares))
    return response
def alter_list_data_to_serialize(request, data):
    data['Result'] = 'OK'
    data['Records'] = data['fields']
    data['TotalRecordCount']= 23
    del data['objects']
    return data
def get_object_list(request):
    start = 0
    end = 10
    if request.GET.get('jtStartIndex') is True :
      start = int(request.GET['jtStartIndex'])
      if request.GET.get('jtPageSize') is True :
        end = int(request.GET['jtStartIndex']) + int(request.GET['jtPageSize'])
    if request.GET.get('jtSorting') is None :
        data=Logs.objects.all()[start:end]
    else:
        jtSorting = str(request.GET['jtSorting'])
        word = jtSorting.split()
        if word[1] == "DESC":
            data=Logs.objects.all().order_by('-' + word[0])[start:end]
        else:
            data=Logs.objects.all().order_by(word[0])[start:end]
    return data

Отредактировано gonnpkf (Апрель 25, 2013 14:47:07)

Офлайн

#2 Апрель 26, 2013 09:42:07

likin
От:
Зарегистрирован: 2010-03-15
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Json b django

jtable - это круто. Но почему мы не использовать общепринятый формат json.
Как я вижу что стандартных средств хватает.
http://docs.python.org/2/library/json.html



Офлайн

#3 Апрель 26, 2013 10:32:26

gonnpkf
Зарегистрирован: 2013-04-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Json b django

Стандартных средств как раз не хватает. Точнее json.dumps() уже финальная часть, а до этого нужно было еще несколько шагов сделать. Проблема уже решена, спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version