ajax html+python 웹서버 배포 질문입니다.

조회수 567회

사용파일 : run.py + templates/index.html

run.py 코드

import 패키지  
app = Flask(__name__)  
@app.route('/')   
@app.route('/index.html')  
def index():     
    return render_template('index.html')   

@app.route('/train')   
def training():   
    c = request.args.get('c', 0, type=float) # html 입력값   
        # 대충 딥러닝 모델생성 및 훈련   
        resultdata={'resulttrain':resulttrain,'resulttest':resulttest} # 훈련결과   
    print('훈련세트점수: {:.3f}'.format(resulttrain))   
    print('검증세트점수: {:.3f}'.format(resulttest))   

      return jsonify(resultdata=resultdata) #결과 html로 return 
if __name__ == "__main__":   
    app.run()    

index.html

<!DOCTYPE html> <html lang="en">  
    <head>  
      <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">  
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>  
      <script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>  
      <script type=text/javascript>  
$(function() {  
            $('#training').click(function(){  
              $.ajax({  
                url: '/train',  
                data:{  
                  c: $('#c').val()  
                },  
                dataType: 'JSON',  
                type: 'GET',  
                success: function(data){  
                    $("#resulttrain").html(data.resultdata['resulttrain']);  
                    $("#resulttest").html(data.resultdata['resulttest']);  
                }}); });});  
</script>  
  </head>  
  <body>  
    <div class="container">  
      <div class="header">  
      </div>  
      <hr/>  
      <div>  
    <p>모델 깊이 : <input type="text" id='c' size="5" name="c">  
    <p><span id="resulttrain">훈련세트점수</span>  
    <p><span id="resulttest">검증세트점수</span>  
    <p><button class="btn btn-success" id="training">training</button>  
      </form>  
      </div>  
    </div>  
  </body>  
</html>  

질문: 위의 처럼 구성한후 cmd로 python run.py로 실행하고 localhost:5000으로 하는것 까지는 잘 동작합니다.
문제는 index.html을 웹서버에 업로드해서 실제 접속까지는 가능한데 입력을 하고 버튼을 눌러도 동작이 안됩니다.

질문요약: ajax로 버튼을 눌렀을때 run.py랑 연결하는 방법 == run.py의 코드가 동작하는 좋은 방법이 있나요?

  • success() 콜백 안에서 console.log(data) 찍어보시면 콘솔에 뭐가 나오나요? 엽토군 2020.5.26 17:14
  • 그리고 주어진 코드만 보자면 굳이 ajax 할필요 없이 localhost:5000/train 에 바로 접속했을 때 결과가 나와야 합니다. 그 부분은 문제 없나요? 엽토군 2020.5.26 17:15
  • #엽토군 localhost:5000/train으로 하면 Internal Server Error가 발생합니다. console.log는 resultdata={resulttrain:값1,resulttest:값2}이 나옵니다 공부하면 화질높아짐 2020.5.26 18:10
  • 이상하네요 안나올 이유가 없는데... head에 들어있는 사용자정의 스크립트 태그를 body 안으로 옮겨보시겠어요? 엽토군 2020.5.27 10:49
  • 애초에 브라우저 콘솔에 아무 에러도 안 찍히나요? '네트워크' 탭에서는 500이나 403 같은 에러가 안 발생하나요? 엽토군 2020.5.27 13:52
  • localhost:5000/train?c=3 이런식으로 해서 접속하면 뭐나오나요? (해당 파이썬 스크립트가 정확히 JSON 응답까지 성공하는지 확인하기) 엽토군 2020.5.27 13:54

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)