Python (Flask RESTful API) Изменение объектов

1

У меня возникла проблема с объектом (объектом конфигурации), который я хочу изменить как для программы python, так и для внешних пользователей API. Если я использую новые данные API и PUT, данные сохраняются. Если у меня есть программа Python, попробуйте изменить объект, я не могу наблюдать это изменение при выполнении GET. Как вы можете видеть, я меняю config.encoding на "test", но при выполнении GET я не вижу изменения. Я все еще вижу кодировку, установленную в "ASCII". Я относительно новичок в Python и могу игнорировать что-то простое.

Благодарю.

config = util.Config()

class api_Config(Resource):
    def get(self, id):
        return [{"id": config.id,
                 "capture": config.capture,
                 "controller": config.controller,
                 "gateway_ip_address": config.gateway_ip_address,
                 "port": config.port,
                 "interval_rate": config.interval_rate,
                 "encoding": config.encoding}], 200
    def put(self, id):
        parser = reqparse.RequestParser()
        parser.add_argument("capture")
        parser.add_argument("controller")
        parser.add_argument("gateway_ip_address")
        parser.add_argument("port")
        parser.add_argument("interval_rate")
        parser.add_argument("encoding")
        args = parser.parse_args()
        config.capture = args["capture"]
        config.controller = args["controller"]
        config.gateway_ip_address = args["gateway_ip_address"]
        config.port = args["port"]
        config.interval_rate = args["interval_rate"]
        config.encoding = args["encoding"]
        return [{"id": config.id,
                 "capture": config.capture,
                 "controller": config.controller,
                 "gateway_ip_address": config.gateway_ip_address,
                 "port": config.port,
                 "interval_rate": config.interval_rate,
                 "encoding": config.encoding}], 200

if __name__== "__main__":
        app = Flask(__name__)
        api = Api(app)
        config = util.Config()
        api.add_resource(api_Config, '/<string:id>')
        app.run(debug=True)
        print config.encoding
        config.encoding = "test"
Теги:
flask-restful

1 ответ

0

Есть два места, в которых вы создаете свой объект config. Один из них находится в первой строке, где вы говорите: config = util.Config() который выглядит как либо util.Config - это класс, а затем util.Config() возвращает экземпляр этого класса, или он является функцией и любой функцией возвраты будут назначены в config. В любом случае, это будет объект config используемый вашим методом api_Config.get.

Второе место, где вы создаете экземпляр этого объекта конфигурации, находится после вашего if __name__== "__main__": block, который будет полностью новым объектом и не будет использоваться этими обработчиками api.

Вам может быть достаточно, чтобы удалить это второе определение и использовать

if __name__== "__main__":
    app = Flask(__name__)
    api = Api(app)

    api.add_resource(api_Config, '/<string:id>')
    app.run(debug=True)
    print config.encoding
    config.encoding = "test"

без изменения остальных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню