다음 동작은 파이썬 고유의 문제입니다 (예외가 발생하면 루프 내의 변수 값을 변경할 수 없음). 또는 체리 피와 관련된 문제입니다 (루프가 끝나면 루프 내의 변수 값을 변경할 수 없습니다. HTTPRedirect 예외가 발생했습니다.)? 'outp'값을 'ORIGINAL'에서 'NEWVALUE'로 변경하려고합니다.Python + Cherrypy - 변수 'outp'가 값을 변경하지 않는 이유는 무엇입니까?
나는라는 클래스 내에서 방법으로 다음과 같은 코드를 실행하고 "루트 (객체)"(인쇄 문은 쉽게 읽기 강조) :
: 나는 다음과 같은 출력이 나타납니다@cherrypy.expose
def tester(self, cancel=False, submit=False, clear=False, **data):
outp = "ORIGINAL"
if cherrypy.request.method == 'POST':
print outp ############ FIRST PRINT STATEMENT ##########
if True:
outp = "NEWVALUE"
print outp + '1' ############ SECOND PRINT STATEMENT #########
raise cherrypy.HTTPRedirect('/tester')
print outp + '2' ############ THIRD PRINT STATEMENT ##########
tmpl = loader.load('tester.html')
stream = tmpl.generate(outp=outp)
return stream.render('html', doctype='html')
을
ORIGINAL
NEWVALUE1
127.0.0.1 - - [10/Oct/2012:15:45:33] "POST /tester HTTP/1.1" 303 102
"http://localhost:8080/tester" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.7)
Gecko/20120829 Firefox/10.0.7"
ORIGINAL2
outp 값은 if 문 내에서만 변경됩니다. 나는 예외 인상을 주석 경우 "('/ 테스터') cherrypy.HTTPRedirect 인상"
ORIGINAL
NEWVALUE1
NEWVALUE2
내가 반드시 깊이에서 찾는 게 아니에요 : 나는 다음과 같은 출력이 나타납니다
@cherrypy.expose
def tester(self, cancel=False, submit=False, clear=False, **data):
outp = "ORIGINAL"
if cherrypy.request.method == 'POST':
print outp ############ FIRST PRINT STATEMENT ##########
if True:
outp = "NEWVALUE"
print outp + '1' ############ SECOND PRINT STATEMENT #########
#raise cherrypy.HTTPRedirect('/tester')
print outp + '2' ############ THIRD PRINT STATEMENT ##########
tmpl = loader.load('tester.html')
stream = tmpl.generate(outp=outp)
return stream.render('html', doctype='html')
을 답은 파이썬이 행동을 일으켰는지 아니면 체리 피가 행동을 일으켰는지에 대한 아이디어 일뿐입니다. 코드 스 니펫을 자체 Python 스크립트로 변환하여 동작을 모방 할 수 없으므로 징후가 Cherrypy 문제입니다.
굉장합니다. 답장을 보내 주셔서 감사합니다. HTTPRedirect 예외가 문제라고 생각했습니다. – henryalphabet