glitch terminal에서
pip install flask 하면 플라스크가 설치됨
프레임워크 : 함수를 체계적으로 만들어놓으면 호출할 수 있는 것 (라이브러리) / 입력했을 때 서버와 웹 브라우저가 통신하는 통신내역을 볼 수 있음 (밑의 그림)
<form action="/create/" method="POST">
→ POST 오류 창
→ 이 포스트는 현재 허용되고 있지 않는다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
@app.route('/create_process/', methods=['POST'])
def create_process():
return 'Success!‘
→ 서버에서 동작
→ return값을 서버가 웹 브라우저에게 응답해줌
→ 웹브라우저가 화면에 success! 표시
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
from flask import Flask, request
@app.route('/create_process/', methods=['POST'])
def create_process():
title = request.form['title']
return title
→ return title을 통해서 title을 불러옴(관련 사이트)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
from flask import Flask, request
app = Flask(__name__)
topics = [
{"id":1, "title":"html", "body":"html is ...."},
{"id":2, "title":"css", "body":"css is ...."},
{"id":3, "title":"js", "body":"js is ...."}
]
nextId = 4
def template(content):
liTags = ''
for topic in topics:
liTags = liTags + f'<li><a href="/read/{topic["id"]}/">{topic["title"]}</a></li>'
return f'''
<html>
<body>
<h1><a href="/">WEB</a></h1>
<ol>
{liTags}
</ol>
{content}
<ul>
<li><a href="/create/">create</a></li>
</ul>
</body>
</html>
'''
@app.route("/")
def index():
return template('<h2>Welcome</h2>Hello, WEB!')
@app.route("/read/<int:id>/")
def read(id):
title = ''
body = ''
for topic in topics :
if topic['id'] == id:
title = topic['title']
body = topic['body']
break;
return template(f'<h2>{title}</h2>{body}')
@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 #함수 밖 (전역) 설정
title = request.form['title']
body = request.form['body']
newTopic = {"id": nextId , "title" : title, "body": body}
topics.append(newTopic) #newTopic에 추가한 내용이 topics의 끝에 추가
nextId = nextId + 1
return f'success!! go: /read/{nextId-1}/' #nextId를 써어 행을 추가했으니까 1이 증가되어있음
#우리가 다시 돌아가려는 곳은 nextId 증가되기 전이니까 -1해서 돌아감
# @app.route('/update/')
# def update():
# return 'Update'
app.run()
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
@app.route('/redirect/')
def a():
return redirect('/')
TIp
혼자 오늘 공부했던거 공부할 수 있는 영상!(관련 사이트)
데이터가 폭발적으로 증가할 수 있는 계기 : 웹의 등장!
이전의 정보 관리시스템 : 데이터베이스(1970년대~)
그래서 데이터베이스와 웹을 함께 만들어서 세트라고 생각하는 경우가 많지만, 데이터베이스는 그 자체로 쓸모있음!
데이터베이스는 관계형, 계층형, 문서형, 등등의 패러다임이 존재(제품의 타입들)
관련 사이트(밑에 그림) 참고
→ 전반적으로 ‘관계형 데이터베이스’가 절대강자!
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
SQLite 관계형 데이터베이스 수업 시작
파이썬에는 SQLite가 내장되어 있음
SQLite : 설치 사이트(설치함)(바탕화면\대구 AI 스쿨 사업)
대구 AI 스쿨사업 \ SQLite3 폴더에 만들 표가 계속 저장됨
TIP
표가 많아지면 서로 연관된 표를 그룹핑해서 이름 붙여서 정리정돈 할 때,
엑셀 : 하나하나의 워크시트가 모여서 하나의 파일을 이룸
데이터베이스 : 하나하나가 표, 연관된 표를 그룹핑한 것이 데이터베이스(스키마) (=엑셀 파일 하나)
glitch에서 termianl → sqlite3 실행
→ sqlite3 명렁어로 실행됨
.open topics.sqlite3 살행
→ sqlite3의 파일이 생겼음
.exit → 나가게됨
ls라고 실행 → 파일 목록 나옴
sqlite3 topics.sqlite3 라고 치면 → topics 파일 들어옴
(글리치에서 데이터베이스)(문법 : 대문자 / 값 : 소문자)
terminial에서 CREATE TABLE topics 치고 엔터
id INTEGER PRIMARY KEY라고 치고 엔터
DDL : Data Definition Language
NOT NULL : NULL값을 열에 받아들이지 못하도록 만드는 것
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
→ glitch에서 create를 통한 표를 만들기
→ topics란 표가 만들어짐
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
→ topics 우측클릭 → Add a column 클릭하면(밑의 그림)
→ column 넣을 때 다양하게 넣을 수 있음
→ id / INTEGER / Primary Key
→ title / TEXTC / Not NULL 추가함
→ SQLiteStudio에서 표가 만들어짐
1) glitch의 라우트 설정, 각 함수 및 변수 호출문들
2) SQLite3에 대한 익숙하지 않은 기능들
1) 전반적인 코딩 내용을 큰 테투리에서 파악하는 것 → 작동 순서와 방법을 알 것(X2)
2) 했던 내용들을 반복함으로써 익숙해지기
1) 아직까지 프로그램 자체에 대해 익숙하지 않은 것 같다... 코딩하는데도 시간이 좀 더 걸리고, 코딩하다보면 수업내용 못 따라갈 것 같고...
2) 어떤 식으로 호출이 되고, 그런 흐름을 파악하는 것이 정말... 힘들다