2013-05-16 3 views
1

좋은 저녁 엔드 포인트되지 않은 객체, 나는, 그것은 매우 간단해야 플라스크-편안한 나를 위해 일을 점점 심각한 문제를 겪고 과거에왔다하지만 난에 노력하고파이썬 플라스크-평안한 -

내 라이브러리를 다른 형식으로로드하면이 오류가 계속 발생합니다.

나는 매우 새로운 파이썬이므로 약간의 실수를 저지르고 있다고 확신한다.

내가 기본 사항 내 확장이 입니다 내 구조를 근거로이 골격 https://github.com/imwilsonxu/fbone

떨어져 동적 로딩하고 내가이 내 app.py 파일 내에서 다음

from flask.ext import restful 
api= restful.Api() 

를 정의한이 일을하고 파일

app = Flask(app_name, instance_path=INSTANCE_FOLDER_PATH, instance_relative_config=True) 
configure_app(app, config) 
configure_blueprints(app, blueprints) 
configure_extensions(app) 


def configure_extensions(app): 
    # Flask-restful 
    api.init_app(app) 

마지막으로 지정된 파란색 인쇄 내에서 API를 가져 와서 Hello world example

from sandbox.extensions import api 

class HelloWorld(restful.Resource): 
def get(self): 
    return {'hello': 'world'} 

api.add_resource(HelloWorld, '/') 

이것은 내가 얻는 오류입니다.

AttributeError는 'API 광고'목적이없는 속성 '엔드 포인트'

어떤 도움을 크게 감상 할 수있다.

+1

코드를 모두 게시했다고 생각하지 않습니다 ... 어디에서 끝점을 참조합니까? – Nix

답변

3

이 오류가 발생하는 이유는 Flask 앱의 유효한 인스턴스에 대한 참조가 있기 전에 플라스크에 충분한 리소스를 api 객체에 추가하려고하기 때문입니다.

이 문제를 해결하는 한 가지 방법은 별도의 함수에서 모든 add_resource 호출을 래핑 한 다음 앱과 확장이 초기화 된 후에이 함수를 호출하는 것입니다. 당신의 청사진에

-에서

from sandbox.extensions import api 

class HelloWorld(restful.Resource): 
def get(self): 
    return {'hello': 'world'} 

def add_resources_to_helloworld(): 
    """ add all resources for helloworld blueprint """ 
    api.add_resource(HelloWorld, '/') 

app.py

def configure_extensions(app): 
    # initialize api object with Flask app 
    api.init_app(app) 

    # add all resources for helloworld blueprint 
    add_resources_to_helloworld() 

이는 자원이 API를 객체가 초기화 플라스크 응용 프로그램, 즉 참조를 한 후에 만 ​​앱에 추가되어 있는지 확인합니다 . init_app (app)가 호출 된 후.