- 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 다음글이전글이전 글이 없습니다.댓글