ошибка проверки схемы в производстве в запросе исправления python eve

Я отправляю запрос на исправление в канун Python. Но это генерирует следующую ошибку

 "An exception occurred: __init__() got an
 unexpected keyword argument   'allow_unknown'"

моя структура схемы показана ниже.

    'notifications': {
        'type': 'list',
        'schema': {
            'type':'dict',
            'items':{
                'friendid': {
                    'type': 'objectid',
                    'data_relation': {
                        'resource': 'people',
                        'embeddable': True
                    }
                },

                'seen':{
                    'type':'boolean',
                    'default':False
                },
                'timestamp':{
                    'type': 'integer',
                },
                'daterequest':{
                    'type':'string'
                }
            }
        }
    },

мои параметры исправления схемы показаны ниже.

 notifications: [{
                   friendid: "552b71db60efab0ce3d4aa1b",
                   seen: false, 
                   timestamp: 120, 
                   daterequest: "hai"
                }]

мой полный файл схемы показан в ссылке ниже. файл настроек


person narayanaraju raju    schedule 13.04.2015    source источник


Ответы (2)


Не уверен в фактической ошибке, которую вы получаете (похоже, она совершенно не связана со схемой уведомлений: у вас даже нет правила allow_unknown в вашем файле).

Однако я проверил ваши настройки, и оказалось, что notifications использует устаревшее правило items, которое, в свою очередь, вызывает ошибки проверки как для методов POST, так и для PATCH. Попробуйте обновить свой с помощью следующего редактирования:

    'notifications': {
        'type': 'list',
        'schema': {
            'type':'dict',
            # replace 'items' with 'schema':
            'schema':{
                'friendid': {
                    'type': 'objectid',
                    'data_relation': {
                        'resource': 'people',
                        'embeddable': True
                    }
                },

                'seen':{
                    'type':'boolean',
                    'default':False
                },
                'timestamp':{
                    'type': 'integer',
                },
                'daterequest':{
                    'type':'string'
                }
            }
        }
    },

После этого я мог POST и PATCH без проблем. Надеюсь это поможет.

person Nicola Iarocci    schedule 13.04.2015
comment
да, я был протестирован с заменой элементов схемой, но не сработал. Если я передаю пустой массив, например уведомления: [] обновление успешно. Но уведомления: [{friendid: 552b71db60efab0ce3d4aa1b, увиденное: false, отметка времени: 120, daterequest: hai }] становится выше ошибки. пожалуйста, помогите мне, я трачу два дня на эту ошибку. - person narayanaraju raju; 13.04.2015
comment
на локальном сервере работает нормально. Но в производстве (онлайн-сервер Google App Engine) ошибка выше - person narayanaraju raju; 13.04.2015

Вы получите эту ошибку, если используете собственный класс валидатора, который переопределяет __init__, но не принимает allow_unknown в качестве аргумента ключевого слова, например. как это:

from eve import Eve

class MyValidator(eve.io.mongo.Validator):

    # not accepting keyword arguments here will cause the error
    def __init__(self, **kwargs):
        ...

app = Eve(__name__, validator=MyValidator)
person kynan    schedule 15.10.2015