TIL(22.1.24.MON)

기미노·2022년 1월 26일
0
post-thumbnail

01. 4주차 배울 것

  • Flask

02. Flask 시작하기 - 서버만들기

  • 1) new project → prac 폴더를 선택하고 create 를 클릭

  • 2) Flask 패키지 설치하고 시작!

    윈도우 : 좌상단File → setting → Python interpreter

    • flask 로 검색한 후, Install package 클릭
  • 3) Flask 기초: 기본 실행

    • Flask 프레임워크: 서버를 구동시켜주는 편한 코드 모음. 서버를 구동하려면 필요한 복잡한 일들을 쉽게 가져다 쓸 수 있습니다.
    • app.py 파일을 만들어 flask 시작 코드를 작성.

      👉 파일 이름은 아무렇게나 해도 상관없으나, 통상적으로 flask 서버를 돌리는 파일은 app.py라고 이름 짓는다.

      • flask 시작 코드
        from flask import Flask
        app = Flask(__name__)
        
        @app.route('/')
        def home():
           return 'This is Home!'
        
        if __name__ == '__main__':  
           app.run('0.0.0.0',port=5000,debug=True)
    • 오른쪽 클릭 → 'Run app'을 클릭하면 서버 작동
    • localhost는 내 컴퓨터에서 클라이언트 서버 두 개를 구동하고 있는 로컬개발환경이야 라는 의미.
    • 종료하는 방법

      👉 터미널 창을 클릭하고 ctrl + c 을 누르시면 서버를 종료할 수 있습니다.

  • 4) Flask 기초: URL 나눠보기

    • @app.route('/) 부분을 수정해서 URL을 나눌 수 있다

      👉 url 별로 함수명이 같거나, route('/')내의 주소가 같으면 안됨.

      from flask import Flask
      app = Flask(__name__)
      
      @app.route('/')
      def home():
         return 'This is Home!'
      
      @app.route('/mypage')
      def mypage():  
         return 'This is My Page!'
      
      if __name__ == '__main__':  
         app.run('0.0.0.0',port=5000,debug=True)
        

    03. Flask 시작하기 - HTML파일 주기

  • 1) Flask 기초: 기본 폴더구조 -

    👉 Flask 서버를 만들 때
    프로젝트 폴더 안에,
    ㄴstatic 폴더 (이미지, css파일을 넣어둡니다)
    ㄴtemplates 폴더 (html파일을 넣어둡니다)
    ㄴapp.py 파일 만들기
    (venv는 실제로는 보이지만, 안보인다~ 생각하기)

  • 2) Flask 기초: HTML 파일 불러오기

    👉 templates 폴더의 역할
    HTML 파일을 담아두고, 불러오는 역할

    1. 간단한 index.html 파일을 templates 안에 만들기

    2. html 파일 불러오기

      👉 flask 내장함수 render_template를 이용

      from flask import Flask, render_template
      app = Flask(__name__)
      
      ## URL 별로 함수명이 같거나,
      ## route('/') 등의 주소가 같으면 안됩니다.
      
      @app.route('/')
      def home():
         return render_template('index.html')
      
      if __name__ == '__main__':
         app.run('0.0.0.0', port=5000, debug=True)

04. Flask시작하기 - 본격 API 만들기

  • 1) GET, POST 요청타입

    👉 GET, POST 방식


    • GET → 통상적으로! 데이터 조회(Read)를 요청할 때
      예) 영화 목록 조회
      데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달
      → 예: google.com?q=북극곰
    • POST → 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때
      예) 회원가입, 회원탈퇴, 비밀번호 수정
      데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달
  • 2) GET, POST 요청에서 클라이언트의 데이터를 받는 방법
    • 과정

      GET은 먼저 /test라는 창구에 GET방식으로 처리하는 것.
      POST는 /test라는 창구에서 POST방식으로 처리하는 것.
      서버에서 요구하는 요청과 클라가 요구하는 요청이 일치해야 함
      서버에서 데이터를 받아와서 response변수에 서버에서 확인을 끝내고 보내준 데이터를 담는다.

      • GET 요청 API코드
        @app.route('/test', methods=['GET'])
        def test_get():
           title_receive = request.args.get('title_give')
           print(title_receive)
           return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
      • GET 요청 확인 Ajax코드
        $.ajax({
            type: "GET",
            url: "/test?title_give=봄날은간다",
            data: {},
            success: function(response){
               console.log(response)
            }
          })
      • POST 요청 API코드
        @app.route('/test', methods=['POST']) #/test라는 창구를 만들었고, 그 창구에서는 post방식 으로 처리하는 것만 받는다.
        def test_post():
           title_receive = request.form['title_give'] #(고객님^^ 혹시 'title_give'를 가지고 오셨나요?)
           print(title_receive)  #'title_give'를 받아와서 변수에 넣어줘서 print(찍어준다.)한다.(아 보내주신자료가 맞는지 받아서 확인해볼게요~)
           return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
        #(확인 다 했고 요청해주신 데이터를 드릴게요~) 즉 클라에게 데이터를 보내줌
      • POST 요청 확인 Ajax코드
        <head>
        <script>
        	function hey(){
        		$.ajax({
        	    type: "POST",
        	    url: "/test",
        	    data: { title_give:'봄날은간다' },
        	    success: function(response){
        	       console.log(response)
        		   }
        	  })
        	}
        </script>
        </head>
        <body>
        <button onclick="hey()"></button>
        </body>
        
        // 버튼을 누르면 hey()가 불려짐.
        // ajax요청을 함. /test라는 창구에 post방식으로 요청함.
        // 내 가져왔습니다^^.data부분이에요~
        // response변수에 서버에서 확인을 끝내고 보내준 데이터를 담는다.
profile
인풋보다는 아웃풋을 중점적으로

0개의 댓글