2013-06-17 2 views
1

У меня есть следующие функции,Как взять словарь и отправить JSON ответ

def facebooktest(request): 
    fb_value = ast.literal_eval(request.body) 
    fb_foodies = Foodie.objects.filter(facebook_id__in = fb_value.values()) 
    for fb_foodie in fb_foodies: 
     state = request.user.relationships.following().filter(username = fb_foodie.user.username).exists() 
     userData = { 
      'fbid': fb_foodie.facebook_id, 
      'followState': int(state), 
       } 

В основном я проверяю, чтобы увидеть, какой из пользователя facebook друзей на моем Джанго приложение. Если они есть, верните followState. FollowState в основном возвращает 1 или 0. 1, если пользователь уже следит за ними в моем приложении Django и 0, если они не следуют друг другу в facebook в моем приложении Django.

Я хотел бы вернуться обратно словарь типа JSON для этого пользователя, который выглядит следующим образом:

[{fbid:222222222222, followState: 0}, {fbid:111111111111, followState: 1}, {fbid:435433434534, followState:1}] 

EDIT

У меня есть структура словаря, но я просто хочу, чтобы вернуть его к структуре выше ,

ответ

1
def facebooktest(request): 
    fb_value = ast.literal_eval(request.body) 
    fb_foodies = Foodie.objects.filter(facebook_id__in = fb_value.values()) 
    response = [] 
    for fb_foodie in fb_foodies: 
     state = request.user.relationships.following().filter(username = fb_foodie.user.username).exists() 
     userData = { 
      'fbid': fb_foodie.facebook_id, 
      'followState': int(state), 
       } 
     response.append(userData) 
    return json.dumps(response) 
+0

Это не представление, так как оно не возвращает HttpResponse, но возвращает строку JSON со структурой, которую вы просили. –

+0

Спасибо, мы поняли! – noahandthewhale

1

Существует функция в пакете django.forms.models для этого: model_to_dict

from django.forms.models import model_to_dict 

model_to_dict(your_model, fields=[], exclude=[]) 

С помощью:

model_to_dict(instance, fields=None, exclude=None) 
    Returns a dict containing the data in ``instance`` suitable for passing as 
    a Form's ``initial`` keyword argument. 

    ``fields`` is an optional list of field names. If provided, only the named 
    fields will be included in the returned dict. 

    ``exclude`` is an optional list of field names. If provided, the named 
    fields will be excluded from the returned dict, even if they are listed in 
    the ``fields`` argument. 
+0

Я отредактировал мой вопрос, пожалуйста, взгляните! Я думаю, что я, возможно, не был ясен :) – noahandthewhale

+0

Мой ответ совершенно неактуален! – JanRavn

1

Я думаю, что вы ищете это:

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

где «response_dict» будет вашим словарем.

Смежные вопросы