2014-04-05 2 views
1

학습 목적으로 플라스크 응용 프로그램을 쓰고 있습니다. 플라스크 세션을 사용하지 않아서 작동하지 않습니다. 나는 처음에는 비어있는 목록이 있다고 가정했다. 나는 웹 사이트의 random_number_list을 인쇄 할 때플라스크 - 사용자가 떠날 때 모든 것을 다시 설정하십시오.

app = Flask(__name__) 
app.debug = True 
app.secret_key = 'nosecret' 

random_number_list = [] 

@app.route('/', methods=['POST']) 
def login(): 
    # Read from the from input 
    usrn = request.form['username'] 
    pswd = request.form['password'] 
    random_number_list = randList() # The list will have 10-20 random integer elements 

코드는 완벽하게 작동합니다 : 사용자가 링크를 webapp.herokuapp.com 다음 인덱스 실행에 연결합니다. 그러나 webapp.herokuapp.com에서 다시 내 앱을 방문하면 random_number_list가 재설정되지 않습니다. 대신 새로운 요소가 마지막 목록에 추가되고 프로세스가 계속 진행됩니다. 수비력 로그인에

E.g: at first connection to the webapp: 
1 4 5 6 7 
Second connection: 
1 4 5 6 7 2 3 4 2 1 

()는 전 random_number_list을 시도 = I는 Heroku가 새로운 코드를 푸시 할 때마다 [] 새로운 결과를 생성하지만,리스트 중 초기화되지 전에 단지 리셋된다.

누구든지이 문제를 해결할 수있는 아이디어가 있습니까? 고맙습니다.

+0

'randList()'는 어떻게 구현되어 있습니까? – metatoaster

+0

그 : xrange (10)의 r에 대해 [random.randint (0,9)]를 반환합니다. – Kiddo

답변

0

random_number_list 배열이 전역 변수이기 때문에 이러한 현상이 발생합니다. 이는 dyno가 다시 시작할 때까지 동일하게 유지됩니다.

사이트를 여러 번 방문했기 때문에 데이터가 계속 커질 수 있습니다.

여기에 목표는 무엇입니까? 사용자가 로그인하려면 - 사용자 특정 항목을 저장 한 다음 로그 아웃 하시겠습니까? 그렇다면 실제로 세션을 사용해야합니다. 플라스크 세션 프레임 워크 (http://flask.pocoo.org/docs/quickstart/#sessions)를 사용하면 클라이언트의 컴퓨터에 데이터를 저장할 수 있습니다. 이렇게하면 사용자가 사이트로 돌아올 때마다 해당 사용자의 컴퓨터에 이전에 저장 한 데이터를 검색 할 수 있습니다.

그러나주의해야 할 점은 이런 식으로 일을 할 때 많은 보안상의 영향이 있다는 것입니다.

관련 문제