2009-05-15 10 views
3

J'essaie d'écrire une application facebook où l'utilisateur peut voir l'historique de statut de ses amis. Tout semble fonctionner correctement jusqu'à ce que j'essaie d'enregistrer les informations d'état dans ma base de données. ici est le code:Problème Facebook + django

class UserStatus(models.Model): 
     facebookid = models.IntegerField() 
     time = models.IntegerField() 
     status_msg = models.CharField(max_length = 2000) 



@facebook.require_login() 
def canvas(request): 
    # Get the User object 
    user, created = FacebookUser.objects.get_or_create(id = request.facebook.uid) 
    user_lastname = request.facebook.users.getInfo([request.facebook.uid], ['last_name'])[0]['last_name'] 
    query = "SELECT time,message FROM status WHERE uid=%s" % request.facebook.uid 
    result = request.facebook.fql.query(query) 

résultat Alors me donner toutes les informations de l'état. donc mon problème est son erreur de donner quand je tente de l'enregistrer.

userstatus = UserStatus() 
    for item in result: 
    userstatus.facebookid = request.facebook.uid 
    userstatus.time = item.time 


userstatus.msg = item.message 
    userstatus.save() 

erreur: Erreurs lors de la page de chargement de l'application

code d'erreur HTTP reçu 500 lors du chargement

Alors, comment puis-je résoudre ce problème.

merci.

+1

Vous devrez donner plus d'informations. Quelle est l'erreur exacte et traceback? –

+0

Le problème est à chaque fois qu'il donne cette erreur: Erreurs lors de la page de chargement de l'application code d'erreur HTTP reçu 500 lors du chargement http://taramsfb.tarams.com/facebook/ Il y a encore quelques petits défauts Facebook et Les fabricants de fblaspal essaient de se débarrasser. Nous apprécions votre patience alors que nous essayons de résoudre ces problèmes. Votre problème a été enregistré - s'il persiste, veuillez revenir dans quelques jours. Merci! Je ne sais pas où est le problème. – user102724

+2

Tant que l'application Facebook est en mode développement, vous devriez être en mesure de faire «Voir la source» dans votre navigateur sur la page d'erreur et voir la réelle trace de Django (commentée). –

Répondre

0

D'abord, vous devriez vérifier si vous obtenez des résultats de cela,

result = request.facebook.fql.query(query) 

Assurez-vous que les résultats sont en bon format requis par votre modèle (uid est entier, le temps est entier et le message est une chaîne.

Encore une fois assurez-vous ce résultat est un objet python valide et non une chaîne JSON/objet.

Rappelez-vous python est pas entièrement compatible avec JSON donc si le résultat est JSON faites ceci pour le convertir en python objet,

import simplejson 
result = simpljson.loads(result) # if result was a JSON string 
result = simpljson.loads(simplejson.dumps(result)) # if result was a JSON object 

Vérifiez maintenant si le résultat est une liste de dictionnaires {"time": 123456, "messaage": "xyz"}.

for item in result: 
    userstatus = UserStatus() 
    userstatus.facebookid = request.facebook.uid 
    userstatus.time = item["time"] 
    userstatus.msg = item["message"] 
    userstatus.save() 

Et vous ne devriez avoir aucune erreur maintenant.

+0

StakcOverfolw ASTUCE 1: Vérifiez toujours la date de la question avant de répondre. :( –