2011-02-23 2 views
2

Python에서 Sinatra의 URL 라우팅을 다시 생성하는 방법이 있습니까? 그리고 이것이 바람직하지 않은 이유가 있습니까? 시나에서Sinatra 스타일 URL 라우팅을위한 Ruby 블록과 동일한 Python

: 나는 파이썬이하는 것을 수집

def get(path, opts={}, &block) 
    conditions = @conditions.dup 
    route('GET', path, opts, &block) 

    @conditions = conditions 
    route('HEAD', path, opts, &block) 
end 

:

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

시나 루비 블록을 통해이 간결을 달성 : 플라스크에서

get '/' do 
    'Hello world!' 
end 

(라우팅을위한 데코레이터 사용) Ruby 블록과 완전히 똑같은 것은 아니지만 기능을 재현 할 수있는 방법이 있습니다. 어떻게이 일을 할 수 있을까요?

답변

3

당신이 말했듯이, 파이썬에는 루비 블록과 같은 것이 없습니다. 데코레이터는 라우팅에 일반적으로 사용되는 솔루션입니다. 다른 방법은 경로를 포함하는 목록/사전을 만드는 것이지만 기본 코드 옆에 경로 정의를 원하는 것처럼 보이기 때문에 데코레이터 방식을 사용하면됩니다.

0

두 번째 질문에 '이것이 바람직하지 않은 이유가 무엇입니까?'

  • 명명 된 기능을 사용하면 사이트를 쉽게 구조 조정할 수있는 url_for(some_function) 일을 할 수 있습니다.
  • 명명 된 함수는 테스트, 문서 문자열 등을 허용합니다.