• 티스토리 홈
  • 프로필사진
    Minuffy
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Minuffy
  • 프로필사진
    Minuffy
    • 분류 전체보기 (9)
      • Flask (2)
      • Java (0)
      • Spring (1)
      • MySql (1)
      • OracleDB (1)
      • MAC 맥북 TIP (0)
      • Ubuntu (1)
      • JSON (1)
      • Python (1)
      • GitHub (1)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Flask 기초 (Feat.VSC)
        2024년 09월 29일
        • Minuffy
        • 작성자
        • 2024.09.29.오후04:23

        플라스크는 Python의 마이크로 웹 프레임워크이다. 다양한 웹 엔진과 붙여서 쓸 수 있고 또 가볍다.

        from flask import Flask
        
        app = Flask(__name__)
        
        @app.route("/")
        def hello_world():
            return "<p>Hello, World!</p>"
        
        if __name__ == "__main__":
            app.run()
        

        route() 데코레이터를 사용하여 지정한 URL을 Flask 에게 알린다.

        이 함수는 사용자의 브라우저에 표시하려는 메시지를 반환한다.

        app = Flask(__name__) 으로 Flask 클래스를 가져와 app.run() 으로 실행

        해당 서버를 다른 컴퓨터도 접속할 수 있도록 공개하는 방법은 $ flask run --host=0.0.0.0

        웹 애플리케이션에서 클라이언트가 서버에 보내는 데이터에 대해 반응하는 것이 중요한데 Flask는 request 객체를 제공한다.

        from flask import request
        
        with app.test_request_context('/hello', method='POST'):
            assert request.path == '/hello'
            assert request.method == 'POST'
        

        이와 같이 요청 객체에 접근할 수 있다.

        request 객체

        @app.route('/login', methods=['POST', 'GET'])
        def login():
            error = None
            if request.method == 'POST':
                if valid_login(request.form['username'],
                               request.form['password']):
                    return log_the_user_in(request.form['username'])
                else:
                    error = 'Invalid username/password'
            return render_template('login.html', error=error)
        

        form 속성에 키가 없으면 Keyerror 가 발생한다. 이 에러를 캐치할 수 있지만 그렇게 하지 않으면 HTTP 400 오류 페이지를 대신 표시

        URL(?key=value)에 제출된 매개변수에 액세스 하려면 args 속성을 사용할 수 있다. searchword = request.args.get('key', '')

        파일 업로드

        enctype="multipart/form-data 양식으로 전송받아 처리

        from flask import request
        
        @app.route('/upload', methods=['GET', 'POST'])
        def upload_file():
            if request.method == 'POST':
                f = request.files['the_file']
                f.save('/var/www/uploads/uploaded_file.txt')
            ...
        

        파일의 정보를 알고 싶다면 file.filename 과 같은 속성에 액세스 할 수도 있다. 하지만 이 값은 위조될 수 있으니 절대로 신뢰하는건 x

        쿠키

        쿠키에 액세스하려면 cookies 속성을 사용할 수 있다.

        쿠키를 설정하려면 set_cookie 메소드를 사용할 수 있다.

        from flask import request
        
        @app.route('/')
        def index():
            username = request.cookies.get('username')
            # 쿠키가 없다면 KeyError
        

        아래는 쿠키 저장이다.

        from flask import make_response
        
        @app.route('/')
        def index():
            resp = make_response(render_template(...))
            resp.set_cookie('username', 'the username')
            return resp
        

        JSON을 포함된 API

        API를 작성할 때 일반적으로는 JSON 이 응답 형식이다.

        Flask로 이런 API 작성이 쉬우며 딕셔너리로 반환하면 JSON 응답으로 변환된다.

        @app.route("/me")
        def me_api():
            user = get_current_user()
            return {
                "username": user.username,
                "theme": user.theme,
                "image": url_for("user_image", filename=user.image),
            }
        

        'Flask' 카테고리의 다른 글

        (MAC) M2 Pro 맥북 VSC에서 Flask 설치 (feat.dotenv)  (0) 2024.09.28
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
      • request 객체
      • 쿠키
      • JSON을 포함된 API
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.