[7일차] Flask, Sqlite3
1. 학습내용
create 페이지 생성
GET방식 → POST 방식 변경
- create 했을 때 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)
- title과 body를 추가하고나면 /create_process/로 이동한다.
이 때 id는 자동증가 되도록 nextId 변수를 만들어서 global로 선언한다.
nextId는 뒤에 nextId = 4로 이미 선언되어 있음.
@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}/')
GET방식, POST방식
- GET 방식 : URL에 데이터를 포함시켜 전송하고, URL에 노출되어 보안에 취약하다.
- POST 방식 : URL에 노출하지 않고 전송하고 데이터를 Body에 포함시킨다.
request
-
request.args
URL 쿼리 문자열의 키/값 쌍을 받아올 수 있다.
GET 방식에서만 사용이 가능하다. -
request.form['title']
POST 메서드의 경우 데이터를 주고 받을 때 body안에 들어가기 때문에 form에서 데이터를 전송한다.
데이터를 받을 때 request.form['key'] 형식으로 데이터를 받으면 된다. -
그 밖에도
request.data
request.files
request.values
request.json 등이 있다.
redirect
라우팅되어 페이지로 이동했을 때 return에 redirect(주소)로 이동한다.
Flask 공식홈페이지 예제
@app.route('/')
def index():
return redirect(url_for('login'))
delete 페이지 생성
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('/')
Database - SQLite
관계형 데이터베이스 패러다임이 잘 사용된다.
DB Ranking
Database 만들기
DB는 터미널에서 제어하는 게 일반적이지만 GUI방식으로도 제어할 수 있다.
데이터베이스 (database, schema) : 표를 여러개 묶은 것
sqlitestudio 프로그램을 켜서 Add a database로 DB를 만들 수 있다.
teminal 환경에서 DB 만드는 것은 Glitch에서 진행했다.
터미널에서 '.open topics.sqlite3' 해서 topics.sqlite3 파일을 만들었고,
sqlite3을 빠져나올 때는 터미널에서 '.exit'를 하면된다.
sqlite3 topics.sqlite3
터미널에서 이렇게 명령하면 된다.
Table 만들기
- SQLiteStudio에서 table 만들기
id를 primary key로 정하면 자동으로 increase 된다.
아래와같이 id(primary key), title(not null), body를 만든다.
DDL에서 만들어진 SQL Query문을 확인할 수 있다.
- glitch terminal에서 table 만들기
'sqlite3 topics.sqlite3' 명령을 넣으면 topics.sqlite3 파일이 열린다.
'.tables'를 검색하면 topics가 나오는 걸 볼 수 있다.
SQL
SQL(Structured Query Language)
CRUD (Create Read Update Delete)
- SQLiteStudio에서 Open SQL &editor를 클릭해서 SQL문으로 테이블에 insert한다.
관계형 데이터 베이스는 표와 같다.
SQL문을 통해 명령어로 제어할 수 있다.
2. 중요내용
GET, POST 방식을 사용해서 페이지 경로를 만들거나 데이터를 가져올 수 있었다.
GET, POST 방식에 대해서 좀 더 공부해서 Flask 웹을 만들 때 좀 더 활용할 생각이다.
3. 학습소감
GET, POST 방식을 사용해서 페이지 경로를 만들거나 데이터를 가져올 수 있었다.
GET, POST 방식에 대해서 좀 더 공부해서 Flask 웹을 만들 때 좀 더 활용할 생각이다.
단시간에 습득하기에는 학습량이 많긴 하지만
웹이 어떻게 동작하면 좋을지 먼저 구상하고, 그 흐름에 맞게 코드를 작성하면 될 것 같다.
Author And Source
이 문제에 관하여([7일차] Flask, Sqlite3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lnglog/7일차-Flask-Sqlite3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)