2012-06-15 2 views
0

Flask, webapp2 및 Pyramid와 같은 Python 웹 응용 프로그램 프레임 워크에서 각 route-handling-function은 어떻게 고유 한 py 파일을 가질 수 있습니까? 필자는 이러한 모든 기능을 하나의 파일 구조에 모아두기를 원하지 않습니다. Flask, webapp2 및 Pyramid에서이 작업을 수행하려면 어떻게해야합니까?URL 처리 함수를 모듈화하는 방법은 무엇입니까?

감사합니다.

답변

2

플라스크와 피라미드 (webapp2에 대해서는 잘 모르지만 동일 할 수도 있음)에서 route-handling-function (보기라고 부름)은 기능이지만 앱 레지스트리에 등록하는 것입니다.


플라스크에, 당신은 당신이 그것을 등록으로 어디서든보기를 넣을 수 있습니다 :

app.py :

from flask import Flask 
app = Flask(__name__) 

view.py :

from app import app 
@app.route("/") 
def hello(): 
    return "Hello World!" 

main.py :

from app import app 
if __name__ == "__main__": 
    app.run() 

피라미드와 동일합니다. 나는 세부 사항으로 가지 않을 것이다. 등록 과정은 다르지만 아이디어는 같습니다. 그러나 그것을 등록하는 한 언제 어디에서나 사용할 수 있습니다. 뷰를 등록하는 두 가지 방법이 있습니다.

  • add_view을 사용하는 경우 첫 번째 인수는 함수의 점선으로 된 경로입니다. 어디든지 놓고 올바른 길을 여기에 두십시오.
  • scan 사용 : 첫 번째 인수는보기를 찾기 위해 검사되는 패키지입니다. 모든 뷰가 패키지 및 하위 패키지에 있는지 확인하면 모든 것이 작동합니다.
+0

안녕하세요! 고맙습니다. 좋은 설명. 나는 여기에서 그것을 알아낼 수있을 것이다. 하나의 질문이지만, "@ app.route ("/ ")"를 건너 뛰고 view.py에 놓을 수는 있지만 대신 경로 정의와 별도로 함수를 정의하십시오. (예 : 중앙 라우팅 파일, 파일 당 기능별 분리 구조) – Phil

+0

예, 플라스크에는 데코레이터를 사용하지 않고 경로를 등록하는 방법이 있습니다. http://flask.pocoo.org/docs/api/#flask.Flask .add_url_rule – madjar

1

파이썬이 특정 장소에서 기능을 기대한다면 다른 파일에서 직접 가져올 수 있습니다. 예를 들어

, code.py에서 웹 프레임 워크 수입 함수는 경우 : 웹 마찬가지로 지금까지

from mycode.somewhere import a, b 
from mycode.some.other.place import c 

:

다음
def a(): 
    pass 

def b(): 
    pass 

def c(): 
    pass 

다른 곳에서 함수를 가져 와서 다음과 code.py을 대체 할 수 프레임 워크와 관련하여 code.py에 여전히 a, bc 코드가 포함되어 있지만 코드가 다른 방식으로 구성 될 수 있습니다.

+0

대단히 감사합니다. – Phil

관련 문제