Я пытаюсь отобразить хороший ol JSON через return {'category_name': category.category_name}
в файле views.py. Я использую Pyramid Web Framework. Я использую пользовательский RESTful web api и CRUD-проект в базе данных SQLALCHEMY.Редактирование объекта List: AttributeError: объект «list» не имеет атрибута «...»
По какой-то причине, я постоянно получаю Traceback error
:
views/views.py", line 112, in get_category
return {'category': category.category_name}
AttributeError: 'list' object has no attribute 'category_name'
Все, что я хочу сделать, это напечатать к HTML или сделать его HTML, чтобы я мог видеть то, что было создано. В категории есть атрибут category_name ..., который запутан. Возможно, чтобы вернуть значение списка, я должен использовать специальный синтаксис? Я не мог найти что-либо в Интернете, что имело смысл для меня (это был most relevant), но любое руководство будет принята с благодарностью! Я уверен, что это что-то простое.
Получ: сайт объекта возврата (означало для визуализации на Jinja2 шаблоны позже):
@view_config(route_name='category', request_method='GET', renderer='json')
def get_category(request):
with transaction.manager:
category_id = int(request.matchdict['id'])
category = api.retrieve_category(category_id)
if category is None:
raise HTTPNotFound()
return {'category_name': category.category_name}
Это то, что метод POST выглядит (очень похожа на функцию Create в API DB):
@view_config(route_name='categories', request_method='POST', renderer='json')
def post_category(request):
with transaction.manager:
category_name = request.params['category_name']
category = api.create_category(category_name)
return HTTPCreated(location=request.route_url('category',id=id))
DB API для создания категории (это имеет многие-ко-многим с оценкой, таким образом список):
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)
Ошибка явно говорит о том, что «категория» - это список. Отправьте код, создающий 'category'. – Javier
Код категории POST (create) указан выше. Теперь я добавлю API для базы данных. – thesayhey
Пожалуйста, добавьте код 'api.retrieve_category'. – Javier