flask{get/post}, SQL{table}
학습내용
- flask 에서 get, post 이해
- SQL lite3을 이용한 DB 테이블 구축
1. flask에서 get, post 이해
- flask 에서 get, post 이해
- SQL lite3을 이용한 DB 테이블 구축
기본적으로 GET은 읽는 것 POST는 쓰는 것
form 태그에서 속성 값 method를 post로 변경해서 post 방식으로 form을 전송 가능하다.
속성 값 디폴트는 get이다.
요청을 받는 쪽인 flask route에서도 역시 http method를 get 혹은 post로 변경 하여야 한다.
<form action="/create_process/" method="POST">
<p><input type ="text" name="title" placeholder = "title"></p>
<p><textarea name = "body" placeholder = "body"></textarea></p>
<p><input type = "submit" value = "create"></p>
</form>
form 에서 submit으로 post 방식으로 값을 보내면 action에서 실행할 주소를 라우팅 하는 쪽에서도 post로 라우팅을 할 수 있게 지정을 하지 않으면 'method not allowed'라는 에러가 발생한다.
@app.route('/create_process/', methods=['POST'])
def create_process():
return 'Success!'
flask에서 post 방식으로 라우팅 하였을때 form에 입력된 값을 사용하기 위해 request를 사용하여야 한다.
flask 패키지에서 request, redirect 등을 사용하려면
from flask import Flask, request, redirect
를 사용하여 처음에 import 하여야한다.
@app.route('/create_process/', methods=['POST'])
def create_process():
global nextId
title = request.form['title']
body = request.form['body']
newTopic = {"id":nextId, "title":title, "body":body}
topics.append(newTopic)
nextId = nextId + 1
return redirect(f'/read/{nextId-1}/')
@app.route('/delete/<int:id>/', methods = ['POST'])
def delete(id):
for topic in topics:
if topic['id'] == id:
topics.remove(topic)
break;
return redirect('/')
응용하여 다음과 같이 form 으로 받은 값으로 topic에 추가하고 제거하는 기능 구현을 하였다.
오류
flask route에서 변수 주소 값 마지막에 '/'를 적지 않으니 에러가 발생하였다.
@app.route('/delete/<int:id>/', methods = ['POST']) ## 정상
@app.route('/delete/<int:id>', methods = ['POST']) ## 에러
2. SQL lite3을 이용한 DB 테이블 구축
https://sqlitestudio.pl/
위 사이트에서 다운로드 하고 압축을 풀고 설치 파일을 실행한다.
설치가 완료되면 SQL lite studio를 사용할 수 있다.
add database 에서 DB를 만들고 그안에 table을 만들고 column 을 만들고 하는 식으로 DB를 구축한다.
테이블 구축 순서
1. Tables 항목안에 table들이 저장되는데 우클릭 후 create a table을 선택하면 테이블 생성 화면이 나타난다.
2. 테이블 이름을 넣고 add column 버튼을 눌러 항목들을 생성한다.
(primary key, not null 등의 설정 가능)
3. 생성후 새로고침을 하면 끝
4. DDL 탭에서 커맨트 창에서 sql 문 으로 테이블을 생성하기 위한 명령어를 확인할 수 있다.
CREATE TABLE topics (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
body TEXT
);
오늘 생성한 테이블은 위와 같다.
이를 터미널에서 동일하게 작성하면 동일한 테이블이 생성된다.
INSERT INTO topics (title, body) VALUES ("hello", "world")
생성된 테이블에 데이터를 추가할 경우에는 위와 같은 쿼리문으로 데이터를 추가 할 수있다.
이때, id는 primary key 값이기 때문에 생락하여도 자동으로 번호가 순차적으로 부여된다.
Author And Source
이 문제에 관하여(flask{get/post}, SQL{table}), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@veeve12/flaskgetpost-SQLtable저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)