bravo my life!

[항해99][Python][4주차] 내용 정리 본문

Study/항해99

[항해99][Python][4주차] 내용 정리

losajjang 2022. 2. 1. 19:07
728x90

1. Flask

Flask 프레임워크는 서버 구동을 위한 편한 코드의 모음이다.

서버를 구성하는 일은 어려운 일이기 때문에, 프레임워크의 사용이 필요하다.

튜터의 말로는 실무에서도 장인정신으로 한 땀 한 땀 밑바닥부터 서버를 만드는 일은 거의 없다고 한다.

그만큼 어렵고 시간이 많이 걸리는 일이기 때문에 프레임워크의 사용이 거의 필수적이라고 한다.

프레임워크를 쓰지 않으면 태양초를 빻아서 고추장을 만드는 격!
프레임워크는 3분 요리/소스세트라고 생각하면 되겠습니다.

2. 폴더, 파일 정리

서버구성의 기본적인 틀

static 폴더 : html 파일 내의 이미지, js, css 등을 저장할 폴더.

templates 폴더 : html 파일을 저장할 폴더.

app.py : flask 메인 python 파일.

 

 

 

 

 

 


3. API 만들기

API는 은행의 창구라고 이해하면 편하다.

대출 창구에서는 대출 업무를, 예금 창구에서는 예금 업무를 하는 것처럼 API도 요청에 따라 용도별로 나뉘어 작동한다.

    - GET, POST 방식

       클라이언트는 http라는 통신규약을 따르며 데이터를 요청해야 하고 여러 방식이 존재하지만, 강의에서 학습한 것은

       그중 가장 많이 사용되는 GET, POST 방식을 배웠다.

        ■ GET

             - 통상적으로 데이터 조회를 요청할 때 사용.

                 예) 영화 목록 조회

             - 데이터 전달 : url 뒤에 물음표를 붙여 key=value로 전달.

                 예) google.com?q=북극곰

                 예) /test?title_give=봄날은간다

 

        ■ POST

             - 통상적으로 데이터 생성(create), 변경(update), 삭제(delete)를 요청할 때 사용.

                 예) 회원가입, 회원 탈퇴, 비밀번호 수정

             - 데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달.

 

        ■ GET, POST 요청에서 클라이언트의 데이터를 받는 방법

             - Jquery 임포트

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

             - 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']) 
def test_post():
    title_receive = request.form['title_give'] 
    print(title_receive)
    return jsonify({'result':'success', 'msg': '이 요청은 POST!'})

             - POST 요청 확인 Ajax코드

$.ajax({
    type: "POST",
    url: "/test",
    data: { title_give:'봄날은간다' }, 
    success: function(response){
   	   console.log(response)
    }
})

4. 조각 기능

title = soup.select_one('meta[property="og:title"]')
print(title['content'])
#위 코드는 아래 코드와 동일하다.
title = soup.select_one('meta[property="og:title"]')['content']
print(title)
#네이버 영화에서 타이틀, 이미지, 내용 크롤링하기
#참조 url : https://movie.naver.com/movie/bi/mi/basic.naver?code=191597#

title = soup.select_one('meta[property="og:title"]')['content']
image = soup.select_one('meta[property="og:image"]')['content']
desc = soup.select_one('meta[property="og:description"]')['content']

print(title, image, desc)

#출력값
#보스 베이비 2 https://movie-phinf.pstatic.net/20210622_174/1624324910624JhEq2_JPEG/movie_image.jpg?type=m665_443_2 베이비 주식회사의 레전드 보스 베이비에서 인생 만렙 CEO가 된 ‘테드’.베이비인 줄 알았던 조카 ‘티...

5. 4주차 숙제

닉네임, 응원 댓글에 내용을 기입하고 응원 남기기 버튼을 누르면

서버에 해당 내용이 저장되고, 서버에 저장된 내용이 클라이언트

측에 표시되는 기능을 구현하였다.

이번 숙제는 해답을 보지 않고 완료하였다... 는 페이크고, 이전

강의 영상을 보며 만들었다. 그러나 해답을 보지 않고 만들었다는

뿌듯함에 기분은 좋다.