Python 呈现列表对象时出现问题:AttributeError:';列表';对象没有属性'';

Python 呈现列表对象时出现问题:AttributeError:';列表';对象没有属性'';,python,json,rest,pyramid,traceback,Python,Json,Rest,Pyramid,Traceback,我试图通过views.py文件中的返回{'category\u name':category.category\u name}来呈现良好的ol'JSON。我正在使用金字塔网络框架。我在SQLALCHEMY数据库中使用自定义RESTfulWebAPI和CRUD设计 出于某种原因,我不断收到回溯错误: views/views.py", line 112, in get_category return {'category': category.category_name} Attribute

我试图通过views.py文件中的
返回{'category\u name':category.category\u name}
来呈现良好的ol'JSON。我正在使用金字塔网络框架。我在SQLALCHEMY数据库中使用自定义RESTfulWebAPI和CRUD设计

出于某种原因,我不断收到
回溯错误

views/views.py", line 112, in get_category
    return {'category': category.category_name}
AttributeError: 'list' object has no attribute 'category_name'
我所要做的就是把它打印成HTML或者渲染成HTML,这样我就可以看到创建了什么。Category的属性Category_name…令人困惑。也许要返回一个列表值,我必须使用特殊的语法?我在网上找不到任何对我有意义的东西(这是第一次),但任何指导都将不胜感激!我相信这很简单

GET方法:返回对象的站点(打算稍后在Jinja2模板上呈现):

这就是POST方法的外观(非常类似于DB api中的Create函数):

用于创建类别的DB API(这与评估有多对多关系,因此列表):

检索方法: 便利api(继承):
api.retrieve\u category()
正在返回一个列表,如异常所示。你期望它会回来吗

您需要检查API返回的内容。您可能可以访问返回列表中的第一项,这样就可以:

return {'category_name': category[0].category_name}
但是,如果API实际返回一个空列表(
[]
)表示没有结果,那么您需要检查该列表,而不是

if not category:
    raise HTTPNotFound()

错误清楚地表明,
类别
是一个列表。请发布创建
类别的代码。发布(创建)类别代码在上面。我现在将为DB添加API。请添加
API的代码。检索\u category
。看起来像
API。检索\u category
返回一个
列表
可能为空,而不是预期的对象或
。@DanD。是的,它确实返回一个列表。这就是我想要打印的内容。在JSON返回值中打印/呈现列表的语法是什么?一定有办法的,对吧?行得通!非常感谢。我知道这就是问题所在,我只是不知道用JSON返回值打印列表的正确语法。我是个新手!使用
not
代替
None
的提示非常有用!非常感谢。
def create_category(self, category_name):
    new_category = Category(category_name)
    self.session.add(new_category)
    print(new_category)
    self.session.commit()
def retrieve_category(self, something_unique):
    if isinstance(something_unique, int):
        return self.session.query(Category).\
        filter(Category.category_id == something_unique).all() # multiple categories
    elif isinstance(something_unique, basestring):
        print(something_unique) # added
        return self.session.query(Category).\
        filter(Category.category_name == something_unique).one()
        print(something_unique)
        if NoResultFound:
            raise NotFoundError('No results found')
        elif MultipleResultsFound:
            raise MultipleResultsFound('Too many results found')
    elif isinstance(something_unique, Category):
        return something_unique
    else:
        raise ValueError('Value being passed is an object')
def create_assessment(self, name, text, username, videoname, category_names):
    user = self.retrieve_user(username)
    video = self.retrieve_video(videoname)
    cat_objects = [self.retrieve_category(category_name) for category_name in category_names]
    return super(ConvenienceAPI, self).create_assessment(name, text, user, video, cat_objects)
return {'category_name': category[0].category_name}
if not category:
    raise HTTPNotFound()