flask
패키지에서 FLASK
를 임포트FLASK
객체 app
을 선언__name__
: 코드가 실행되면 해당 모듈명이 대입되는 변수, 즉 __main__
이 대입route()
를 사용해 웹페이지와 해당 페이지에서 작동할 함수를 매칭@app.route()
: 라우팅이라고 부르며, 해당 웹 페이지의 주소로 접속했을 경우 실행하는 함수를 표기할 때 사용'/'
에 매칭되는 함수 hello_elice()
를 만들고 route()
밑에 작성main
일 때만 실행하도록 조건문을 추가예시:
https://academy.elice.io/explore 로 접속했을 때 홈화면을 보여주고 https://academy.elice.io/courses 로 접속했을 때 수강할 수 있는 과목들을 볼 수 있음
예시:
home/randing.html 폴더에 홈 화면을 구성했다면, URL Mapping을 통해 접속할 수 있는 주소를 바꿀 수 있음
기존 경로: https://academy.elice.io/home/randing.html
URL 매핑 경로: https://academy.elice.io/explore
@app.route('/')
를 사용하여 각 주소별로 다른 함수를 실행@app.route('/')
는 index()
라는 함수를 매칭 했으며 초기 도메인에서 “Index Page”를 리턴@app.route('/hello')
는 hello()
라는 함수를 매칭 했으며 “/hello” 도메인에서 “Hello Elice!”를 리턴 <variable_name>
섹션을 만듬으로써 varibale section을 URL에 추가할 수 있음<variable_name>
을 매개변수로 받음<converter:variable_name>
: 선택적으로 변수의 타입을 명확하게 하기 위해 컨버터를 쓸 수 있음route()
를 사용해서 url path의 값을 활용<변수명>
으로 감싸주면 함수에서 전달받은 값을 활용<int:변수명>
형태로 사용<path:subpath>
형태로 사용이 가능/user/원하는 username
입력 시 'User %s' % username
리턴/post/원하는 post id
입력 시 'Post %s' %post_id
리턴/subpath/원하는 subpath
입력 시 `"Subpath %s" % subpath
리턴json
파일 형식으로 데이터를 교환jsonify()
: 데이터를 json 형식으로 바꿔줌
POST
는 요청을 처리하기 위해 사용자(클라이언트)로부터 특정 양식(form)의 데이터를 암호화하여 서버로 전송하는 방법POST
방식으로 전달 받은 데이터를 통해 특정 동작을 수행POST
요청은 눈에 파라미터가 보이는 GET
요청과 달리 전달하려는 정보가 HTTP body
에 포함되어 전달Form Data
, Json strings
등이 있음hello()
함수는 index.html
파일을 rendering 하여 반환
templates/index.html
파일에서 가장 핵심적인 구문은 <form>
태그
request.form['변수명']
: post
로 전달받은 값은 request.form['변수명']
을 사용하면 html의 form에서 해당 변수명에 맞는 값을 사용
- value = request.form['input']
없이 실행했을 때 이름을 입력하고 제출 버튼을 누르면 위와 같은 화면이 뜸
- value = request.form['input']
입력 후 실행했을 때 아래의 코드가 정상적으로 실행
@app.route("/post", methods=['POST'])
def post():
#1번을 해보세요!
value = request.form['input']
msg = "%s 님 환영합니다." % value
return msg
GET
또는 POST
로 전달받은 정보를 request
모듈을 사용하여 활용GET
방식의 경우 모든 파라미터를 URL
로 보내 요청하는 방식request
모듈에는 GET
방식으로 URL
의 인자를 'key = value'
형태로 전달했을 때 다음 방식으로 활용number = request.args.get('key`, 초기값)
key
값으로 아무 값도 넘겨받지 못했을 때 활용되는 값이며, 이후에는 URL을 통해 /?key=value
형태로 key
값을 전달받으면 해당 값을 사용key
와 값을 전달받으려면 &
기호를 입력하여 추가할 수 있음예시:
https://주소.com/?key=1&value=2
key의 값은 1, value의 값은 2
get
방식으로 word1
key에 대한 값을 받아 변수 temp1
에 저장 (기본 값 “Elice”)get
방식으로 word2
key에 대한 값을 받아 변수 temp
2에 저장 (기본 값 “Hello”)get
방식을 사용하는 주소에서 값을 지정하지 않는다면 서버 에러(500)가 발생하므로 이때 초기값을 설정하면 서버 에러 발생을 막을 수 있음GET
과 POST
를 동시에 사용하여 웹 페이지를 동작method
가 GET
이라면 이름을 입력받는 웹 페이지를 동작method
가 POST
라면 입력 같은 값을 포함하는 문장을 출력method
가 POST
라면 전달받은 input
변수를 value
에 저장method
가 GET
이라면 index.html
을 반환K-Digital Training x 엘리스, 인공지능 서비스 기획 1기
https://stackoverflow.com/questions/1279613/what-is-an-orm-how-does-it-work-and-how-should-i-use-one
https://flask-docs-kr.readthedocs.io/ko/latest/quickstart.html
https://tools.ietf.org/html/rfc2616#section-10
https://searchapparchitecture.techtarget.com/definition/REST-REpresentational-State-Transfer