GET방식 → POST 방식 변경
@app.route("/create/")
def create():
content = '''
<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>
'''
return template(content)
@app.route('/create_process/', methods=['POST'])
def create_process():
global nextId
getTitle = request.form['title']
getBody = request.form['body']
newTopic = {"id":nextId, "title":getTitle, "body":getBody}
topics.append(newTopic)
nextId = nextId + 1
return redirect(f'/read/{nextId-1}/')
request.args
URL 쿼리 문자열의 키/값 쌍을 받아올 수 있다.
GET 방식에서만 사용이 가능하다.
request.form['title']
POST 메서드의 경우 데이터를 주고 받을 때 body안에 들어가기 때문에 form에서 데이터를 전송한다.
데이터를 받을 때 request.form['key'] 형식으로 데이터를 받으면 된다.
그 밖에도
request.data
request.files
request.values
request.json 등이 있다.
라우팅되어 페이지로 이동했을 때 return에 redirect(주소)로 이동한다.
Flask 공식홈페이지 예제
@app.route('/')
def index():
return redirect(url_for('login'))
id를 받아와서 반복문을 통해 id가 topic의 id와 일치하면 topics에서 remove한다.
delete가 끝나면 메인으로 다시 이동하게 만들었다.
@app.route("/delete/<int:id>/", methods=['POST'])
def delete(id):
for topic in topics :
if topic['id'] == id :
topics.remove(topic)
break
return redirect('/')
관계형 데이터베이스 패러다임이 잘 사용된다.
DB Ranking
DB는 터미널에서 제어하는 게 일반적이지만 GUI방식으로도 제어할 수 있다.
데이터베이스 (database, schema) : 표를 여러개 묶은 것
sqlitestudio 프로그램을 켜서 Add a database로 DB를 만들 수 있다.
teminal 환경에서 DB 만드는 것은 Glitch에서 진행했다.
터미널에서 '.open topics.sqlite3' 해서 topics.sqlite3 파일을 만들었고,
sqlite3을 빠져나올 때는 터미널에서 '.exit'를 하면된다.
sqlite3 topics.sqlite3
터미널에서 이렇게 명령하면 된다.
SQL(Structured Query Language)
CRUD (Create Read Update Delete)
관계형 데이터 베이스는 표와 같다.
SQL문을 통해 명령어로 제어할 수 있다.
GET, POST 방식을 사용해서 페이지 경로를 만들거나 데이터를 가져올 수 있었다.
GET, POST 방식에 대해서 좀 더 공부해서 Flask 웹을 만들 때 좀 더 활용할 생각이다.
단시간에 습득하기에는 학습량이 많긴 하지만
웹이 어떻게 동작하면 좋을지 먼저 구상하고, 그 흐름에 맞게 코드를 작성하면 될 것 같다.