Python 과 Flask를 사용하여 WEB 페이지를 제작하면서 중요했던 부분을 적어보겠습니다.
간단한 자기소개 페이지로 데이터의 CRUD를 사용한 기능이 주인 페이지입니다.
코드 중 데이터 추가, 수정, 업데이트 부분을 다루도록 하겠습니다.
app.py
information.html
버튼에서 Onclik을 사용해 insert() 함수를 실행한다 insert 함수는jQuery .val() 함수로 지정한 태그에 입력된 데이터를 변수로 저장하고 저장된 변수의 값을 formData.append()를 사용해 app.py의 API인 reviews에 전달한다.
데이터를 전달받은 reviews API는 request.form[''] 으로 '' 안의 값에 맞는 데이터들을 각각 변수에 저장하고 doc이란 구조체로 저장하여 데이터베이스에 inton 테이블에 데이터를 저장한다.
app.py
information.html
수정기능은 information.html 에서 get_id 함수를 통해 URL의 쿼리스트링을 이용했다.
테이블에 저장되어 있는 값인 id값을 URL과 함께 보내주어 get_id 함수를 처음에 동작하게 하고 uodate 함수를 이용해 URL값과 jQuery .val() 함수로 지정된 태그에 입력된 데이터들과 같이 fomData.append 를 사용해 app.py의 API인 /update 에 보내준다.
API /update 은 전달받은 값들중 id 데이터는 ObjetId() 함수로 변환시켜준다 그 이유는 여기서 사용한 데이터베이스는 MongoDM로 MongoDM는 테이블에 자연스럽게 Object 형태인 id값을 저장해주는데 이번 소개페이지 에선 이 값을 고유 데이터로 정하고 특정 데이터를 지정 하는것으로 사용하였다.
Object로 변환 시킨 아이디 값을 이용해 전달 받은 데이터로 테이블에 저장되어 있는 데이터를 update 시켜준다.
마지막으로 app.py API중 /update_page는 데이터를 수정할때 이미 입력되어 있는 데이터가 무엇인지 사용자에게 표시해주는 데이터로 데이터베이스에 있는 값드를 불러와 render_template을 사용해 information.html로 보내주고 information.html은 {{name}}과 같은 식으로 데이터를 태그에 값을 넣어준다.
app.py
information.html
삭제기능은 information.html에서 삭제버튼을 통해 del() 함수를 동작시키고 del함수는 데이터의 id 값을 app.py API인 /delete에 보내주고 /delete API는 전달받은 데이터인 id값을 Object 형태로 변환해주고 변환된 id값을 이용해 해당하는 데이터를 테이블에서 삭제한다.
app.py
조회 기능은 app.py의 API 인 /self_introduction_name 을 사용해 테이블에 저장되어 있는 데이터를 불러와 reder_template 를 사용해 self_introduction_name.html로 전달하고 self_introduction_name.html에선 {{name}}과 같이 값을 받아 사용자에게 보여준다.
간단한 자기소개 페이지를 구현한 것이지만 Flask를 이해하게 되는 계기가 되었다 평소 Nodejs로 웹페이지와 기능등을 구현했던 사람으로 Flask라는 새로운 프레임워크를 경험해본 기회였다고 생각한다.
개인적으로 API의 개념을 이해하는데 Nodejs보다 Flask가 더 쉽고 자세하게 알 수 있는것 같다.
앞으로의 코딩에 자주 사용 할것 같기도 하다.
위의 코드에선 수정과 삭제를 POST로 구현 했지만 구현 후 PUT을 알게 되었고 이해가 부족해 사용하지 못했지만 다음 CRUD 기능을 구현할 기회가 있다면 사용하고 싶다.
다음은 PUT을 검색을 통해 이해한 내용이다.
PUT은 POST와 GET 두가지 상황을 염두해 두고 코딩하는 방식인것 같다.
중요한 점은 <string:id> 값과 같이 id값을 쿼리스트링과 비슷하게 가져오는데 다른점은 todos(id)와같이 id값을 쉽게 가져올 수 있으며 <string:id> 에서 값을 미리 변환 하기 때문에 변환을 따로 하지 않아도 된다는 점이다.
PUT은 함수의 매개변수를 꼭 입력해주어야 한다는 점도 중요하다.
이를 기반으로 PUT을 더 자세하게 이해하고 API를 작성 해야겠다.