Python의 프레임 워크가 컨트롤러에서 사전을 반환하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/634024

  •  10-07-2019
  •  | 
  •  

문제

왜 (예 : Web2Py) 변수 대신 사전의 컨트롤러에서 데이터를 반환합니까 (레일 참조)?

예를 들어:

return dict(sape=4139, guido=4127, jack=4098)

대신 (Rails가하는 방식입니다)

@var1 = "jello" 
@var2 = "hihi"

일반 변수 (속도 별/코드 별)보다 사전을 사용하는 이점이 있습니까?

업데이트 : 위의 방법은 실제로 사전을 만드는 올바른 방법입니다 (적어도 Python 2.6.1). 다른 방법 (많은 사람들이 그것이 올바른 것이라고 말합니다)

return {"var1": "jello", "var2": "hihi"} 

Python 프레임 워크에는 많이 사용되지 않습니다.

에서 파이썬의 문서: "키가 간단한 문자열 일 때 키워드 인수를 사용하여 쌍을 지정하는 것이 더 쉽습니다."

dict(sape=4139, guido=4127, jack=4098)
도움이 되었습니까?

해결책

주요 장점은 이것이 파이썬에서 a) 단일 값 이상을 반환하는 유일한 방법이라는 것입니다. 그리고 b) 그 가치에 이름을주십시오. 다른 옵션은 클래스 (추가 코드)를 사용하거나 튜플을 반환하는 것입니다 (이름 없음, 값에 액세스하기 위해 인덱스를 사용해야합니다). 사전이 가장 간단한 솔루션이기 때문에 사전.

또한 몇 가지 방법을 포장하고 결과를 결합/합병 할 수 있습니다. 마지막으로, 각 통화마다 다른 값/이름 쌍을 쉽게 반환 할 수 있습니다. 예를 들어 선택적 값을 생략하거나 추가 힌트를 반환 할 수 있습니다.

다른 팁

원하는 경우 로컬 변수를 사용할 수 있습니다.

def hello():
    var1 = "whatever you like"
    var2 = "another value"
    return locals() # or vars()

hello.html:

<html><body>
 <p>var1 {{=var1}}</p>
 <p>var2 {{=var2}}</p>
</body></html>

PHP에서 Web2Py까지:

web2py에서 "/app/c/f"에 대한 HTTP 요청은 응용 프로그램 "앱"에서 파일 (컨트롤러)의 함수 f () c.py의 호출에 맵핑됩니다. C.py 파일은 Python으로 작성되었습니다. 함수 f ()의 출력은 문자열 (이 경우 반환) 또는 변수 세트 (Python 사전으로 구현 됨) 일 수 있습니다. 후자의 경우 변수는 view라고하는 파일 c/f.html에 의해 html로 렌더링됩니다.

좋은 점은 Jinja2와 같은 템플릿 엔진이 객체와 덕트를 비슷하게 취급한다는 것입니다.

d = {'color': 'red'}
o = Color(red)

그런 다음이 모든 것이 템플릿 구문에서 작동합니다.

d.color d['color'] o.color o['color']
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top