2016-12-21 4 views
1

를 사용하는 경우 다음과 같은 내가 플라스크 응용 프로그램에서 세션 변수를 사용하는 것을 시도하고 사라 :플라스크 세션 변수는 원격 서버 터널링

from flask import Flask, session 
from flask import request 
from flask import render_template 
from flask import redirect, url_for 

app = Flask(__name__) 

app.secret_key = 'verysecretindeed' 

@app.route('/') 
def myform(): 
    session['ax'] = 42 
    return render_template("test1.html", session=session) 

@app.route('/', methods=['GET', 'POST']) 
def modifyvalue(): 

    incr = request.form('incr') 
    a = session['ax'] 
    if incr == '1': 
     a = a + 1 
    session['ax']=a 
    return render_template("test1.html", session=session) 

if __name__ == '__main__': 
    app.run(debug=True) 

이 코드는 내 로컬 컴퓨터에서 잘 작동합니다. 나는 "증분"요청을받은 후,이 코드를 실행하면, 지금

ssh -N -f -L localhost:5000:localhost:5000 <username>@<server>.blah.edu 

:

지금, 나는 다음과 같은 방법으로 내 로컬 호스트에 원격 서버와 터널 원격 서버의 로컬 호스트를에 코드를 실행 웹 페이지에서 다음과 같이 표시됩니다.

keyerror : modifyvalue() 함수 내에 'ax'가 있습니다.

myform() 함수 내에서 세션을 인쇄 할 때 값이 있습니다. 그러나 modifyvalue() 함수에서 세션을 인쇄 할 때 세션이 비어 있습니다.

는 내가 좋아하는 APPLICATION_ROOT 설정을 시도했다 :

app.config['APPLICATION_ROOT']= '/path/to/code/' 

내가 시도 다른 브라우저, 시크릿, 아무것도 작동하는 것 같다 없습니다. myform()에서도 세션을 먼저 지우려고했습니다. 내 app.secret_key는 정적 문자열 값입니다.

어떤 생각이 잘못 될지 모릅니다.

답변

0

두 가지보기 기능이 있습니다. 첫 번째는 세션에 값을 추가하고 다른 하나는이 값을 편집하며, 같은 URL을 사용하여 결합 할 수 있습니다. 글쎄, 내가 양식을 게시 할 때 게시 방법을 확인하십시오.

@app.route('/', methods=['GET', 'POST']) 
def home(): 
    session['ax'] = 42 
    if request.method == 'POST': 
     incr = request.form('incr') 
     a = session['ax'] 
     if incr == '1': 
      a = a + 1 
     session['ax'] = a 
    return render_template("test1.html", session=session)