【问题标题】:Unexpected HTTP status 500 response意外的 HTTP 状态 500 响应
【发布时间】:2010-02-23 01:23:16
【问题描述】:

我有一个简单的 python 方法,应该由 Django/pyAMF 返回,但它返回的是 HTTP 状态 500(尽管我确实通过该方法没有错误并且创建了 Grupo 对象):

def newGrupo(request, igID):  
    return { 'grupo': Grupo.objects.create(ig = Ig.objects.get(pk=igID)),
             'membros' : None,
             'reponsavel' : None
        }

最奇怪的是,另一个做几乎相同事情的调用(它实际上返回了前一个列表)返回 ok:

def listGrupos(request, igID):
    result = []
    for grupo in Grupo.objects.filter(ig=igID):
        grp = {}
        grp['grupo'] = grupo
        grp['membros'] = grupo.membro_set.filter(ativo=True)
        grp['responsavel'] = grupo.responsavel
        result.append(grp)

    return result

知道为什么吗?

【问题讨论】:

    标签: django pyamf


    【解决方案1】:

    在网关上设置记录器,例如:

    import logging
    
    from pyamf.remoting.gateway.django import DjangoGateway
    
    services = {}
    
    gw = DjangoGateway(services, logger=logging)
    

    这应该可以帮助您找到问题的根源。

    【讨论】:

    • 虽然它向我显示了错误消息(类对象无法序列化)它没有任何意义,因为我在其他调用中成功使用了相同的类。
    【解决方案2】:

    听起来像是 Django 对象的 pyAMF 序列化程序有问题。

    它适用于“model.object.filter”,但不适用于“.create”或“.get”。

    使用“primitives”而不是 Django 对象可以避免这个问题:

     return { 'grupo': {"id": g.id},
                 'membros' : None,
                 'reponsavel' : None
            }
    

    【讨论】:

    • 及时:日志记录提示节省了我的时间 :) ...从日志到源到解决方法,也许是补丁(有一天;)
    • 你使用的是什么版本的 Django?我知道需要对 PyAMF 进行一些更新才能支持(即将推出的)1.2,请参阅dev.pyamf.org/ticket/759 了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 2014-01-20
    • 2011-12-21
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2011-01-01
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多