Python의 프레임 워크가 컨트롤러에서 사전을 반환하는 이유는 무엇입니까?
-
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>
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']