2017-09-30 1 views
0

안녕하세요 친구 [ 'train'] 세션이 변경되면로드 템플릿을 표시하도록 템플릿 HTML 파일을 원합니다. 여기 것들 내가 해봤되지만 작동하지 않았다 :파이썬 - 세션 변수가 변경 될 때 플라스크 템플릿을 변경하는 방법?

  • HTML 파일 :

<div class="messages"> 
 
    {% block content%} 
 
    {% if session['training'] %} 
 
     <div class="spinner"><div class="double-bounce1"></div> 
 
     <div class="double-bounce2"><p style="font-weight:bold;font-size:16px;margin-left:-17px;color:white;">Training</p></div> 
 
     </div> 
 
    </div> 
 
    {% else %} 
 
     <div class="messages-content"></div> 
 
    </div> 
 
     <div class="message-box"> 
 
     <textarea type="text" class="message-input" placeholder="Type message..."></textarea> 
 
     <button type="submit" class="message-submit">Send</button> 
 
    </div> 
 
    </div> 
 
    </div> 
 
    {% endif %} 
 
    {% endblock content%}

  • 파이썬 코드 :

def retrain(): 
 
     session['training']=True 
 
    app = Flask(__name__) 
 
    @app.route("/") 
 
    def home(): 
 
     if session.get('logged_in'): 
 
      return render_template('index.html') 
 
     else: 
 
      return render_template('login.html') 
 
    @app.route('/login', methods=['POST']) 
 
    def login(): 
 
     error = False 
 
     POST_USERNAME = str(request.form['username']) 
 
     POST_PASSWORD = str(request.form['password']) 
 
     Session = sessionmaker(bind=enginedb) 
 
     s = Session() 
 
     query = s.query(User).filter(User.username.in_([POST_USERNAME]), User.password.in_([POST_PASSWORD])) 
 
     result = query.first() 
 
     if result: 
 
      session['logged_in'] = True ##for remember me function 
 
      flash('Login success') 
 
      return render_template('index.html') 
 
     else: 
 
      flash('Login failed!') 
 
      return render_template('login.html',error=True) 
 
    @app.route("/logout") 
 
    def logout(): 
 
     session['logged_in'] = False 
 
     return home() 
 
    @app.route('/message', methods=['POST']) 
 
    def reply(): 
 
     answer=response(request.form['msg']) 
 
     if "train" in answer: 
 
       retrain() 
 
     return jsonify({ 'text': answer})

I가 발생하고있어 문제는 내가 내 템플릿 페이지를 새로 고침 할 때 회 전자 로더는 표시이다. 대답이 인 경우 reply()에 "train"이 포함 된 경우 템플릿을 자동으로 다시로드하고 회 전자를 표시해야합니다.

답변

0

reply()의 서버에서 세션을 변경하지만 json을 반환하고 템플릿을 새로 고치거나 클라이언트의 세션을 업데이트 할 수있는 항목을 반환하지 않는 것이 문제입니다.

관련 문제