41
글 쓰고 읽기, 리스트 보기 나만의 블로그 개발해보기 03

[나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

  • Upload
    -

  • View
    397

  • Download
    1

Embed Size (px)

Citation preview

Page 1: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

글 쓰고 읽기, 리스트 보기나만의 블로그 개발해보기

03

Page 2: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

데이터를 보내는 방법

GET

POST

데이터를 달라고 요청한다 ex) 일반적인 웹 사이트 들어갈 때

데이터를 보낸다 ex) 게시물 올리기, 로그인 등

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 3: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

블로그 만들기 여정의 시작지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 4: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

한번 생각해봅시다

블로그 게시글엔 무슨 정보가 필요할까요?

Page 5: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

제목

업로드 시간

내용

.

.

. 또 없을까요?

Page 6: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

테이블을 직접 한번 설계해 봅시다

게시글 제목 : 문자열 게시글 내용 : 문자열 게시 일자 : 날짜

.

.

.

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 7: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

테이블을 직접 한번 만들어 봅시다

CREATE TABLE `article` (`title` TINYTEXT NOT NULL,`body` TEXT NOT NULL,`timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP

)

12345

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 8: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

테이블을 직접 한번 만들어 봅시다

CREATE TABLE `article` (`title` TINYTEXT NOT NULL,`body` TEXT NOT NULL,`timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP

)

12345

article이라는 테이블을 만듭니다.CREATE TABLE `article`

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 9: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

CREATE TABLE `article` (`title` TINYTEXT NOT NULL,`body` TEXT NOT NULL,`timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP

)

`title` TINYTEXT NOT NULL,`body` TEXT NOT NULL,`timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP

테이블을 직접 한번 만들어 봅시다

12345

그 테이블은 다음과 같은 Column들를 가지고 있습니다.

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 10: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

테이블을 직접 한번 만들어 봅시다

CREATE TABLE `article` (`title` TINYTEXT NOT NULL,`body` TEXT NOT NULL,`timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP

)

12345

Column의 이름이고`title`TEXT

DEFAULT CURRENT_TIMESTAMPColumn의 데이터 타입이며

Row가 생성될 때에 가지는 기본 값입니다.

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 11: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

MySQL 콘솔로 직접 넣어봅시다전 당신이 직접 코드를 짜보길 원합니다

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 12: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

일단 데이터베이스를 만들어봅니다.

CREATE DATABASE `blog`;use blog

12

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 13: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

만들어진 테이블에 직접 넣어봅시다

INSERT INTO `article`(`title`, `body`) VALUES(‘첫번째 게시물입니다’, ‘첫번째 내용입니다’)

12

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 14: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

만들어진 테이블에 직접 넣어봅시다

INSERT INTO `article`(`title`, `body`) VALUES(‘첫번째 게시물입니다’, ‘첫번째 내용입니다’)

12

INSERT INTO `article` article이란 테이블에 새로운 값을 입력하겠습니다.

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 15: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

만들어진 테이블에 직접 넣어봅시다

INSERT INTO `article`(`title`, `body`) VALUES(‘첫번째 게시물입니다’, ‘첫번째 내용입니다’)

12

입력할 Column은 다음과 같습니다.

(`title`, `body`)

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 16: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

만들어진 테이블에 직접 넣어봅시다

INSERT INTO `article`(`title`, `body`) VALUES(‘첫번째 게시물입니다’, ‘첫번째 내용입니다’)

12 그 Column에 들어갈 값은

다음과 같습니다.VALUES(‘첫번째 게시물입니다’, ‘첫번째 내용입니다’)

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 17: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

넣은 값을 다시 한번 불러와봅시다.다시 복습해보기

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 18: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

이번엔 파이선을 통해서 넣어봅시다난데? 난 쉬운 파이선인데?

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 19: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

MySQL을 쉽게 쓸 수 있도록 도와주는 MySQLdb 라이브러리 다운로드

$ pip install MySQL-python

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 20: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

123

45678

import MySQLdb

conn = MySQLdb.connect(host='localhost', user='user', passwd='pwd', db='dbname', charset='utf8')c = conn.cursor()

c.execute('''INSERT INTO `article`(`title`, `body`) VALUES(\'두번째 게시물입니다\', \'두번째 내용입니다\')''')conn.commit()

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 21: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

123

45678

import MySQLdb

conn = MySQLdb.connect(host='localhost', user='user', passwd='pwd', db='dbname', charset='utf8')c = conn.cursor()

c.execute('''INSERT INTO `article`(`title`, `body`) VALUES(\'두번째 게시물입니다\', \'두번째 내용입니다\')''')conn.commit()

conn = MySQLdb.connect(host='localhost', user='user', passwd='pwd', db='dbname', charset='utf8')

MySQL와 연결합니다.

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 22: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

123

45678

import MySQLdb

conn = MySQLdb.connect(host='localhost', user='user', passwd='pwd', db='dbname', charset='utf8')c = conn.cursor()

c.execute('''INSERT INTO `article`(`title`, `body`) VALUES(\'두번째 게시물입니다\', \'두번째 내용입니다\')''')conn.commit()

커서를 만듭니다. 커서란, SQL 구문 등을 실행할 수 있는 객체입니다.

c = conn.cursor()

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 23: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

123

45678

import MySQLdb

conn = MySQLdb.connect(host='localhost', user='user', passwd='pwd', db='dbname', charset='utf8')c = conn.cursor()

c.execute('''INSERT INTO `article`(`title`, `body`) VALUES(\'두번째 게시물입니다\', \'두번째 내용입니다\')''')conn.commit()

쿼리문을 실행합니다.

c.execute('''INSERT INTO `article`(`title`, `body`) VALUES(\'두번째 게시물입니다\', \'두번째 내용입니다\')''')

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 24: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

123

45678

import MySQLdb

conn = MySQLdb.connect(host='localhost', user='user', passwd='pwd', db='dbname', charset='utf8')c = conn.cursor()

c.execute('''INSERT INTO `article`(`title`, `body`) VALUES(\'두번째 게시물입니다\', \'두번째 내용입니다\')''')conn.commit()conn.commit() 변경된 값을 데이터베이스에 적용합니다.

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 25: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

12345

c.execute('SELECT * FROM `article`’)list = c.fetchall()

for i in list: print “%s : %s”%(i[0], i[1])

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 26: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

12345

c.execute('SELECT * FROM `article`’)list = c.fetchall()

for i in list: print “%s : %s”%(i[0], i[1])

c.execute('SELECT * FROM `article`’) 쿼리문을 실행합니다.

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 27: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

12345

c.execute('SELECT * FROM `article`’)list = c.fetchall()

for i in list: print “%s : %s”%(i[0], i[1])

위 실행 결과의 전체를 리스트 형태로 가지고 옵니다.list = c.fetchall()

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 28: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

12345

c.execute('SELECT * FROM `article`’)list = c.fetchall()

for i in list: print “%s : %s”%(i[0], i[1])

하나의 요소는 하나의 튜플입니다.for i in list: print “%s : %s”%(i[0], i[1])

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 29: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

(“안녕하세요”, “튜플입니다”)

수정할 수 없는 리스트입니다쌤, 튜플이 무엇이에요?

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 30: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

프론트 단에서 어떻게 서버의 데이터를 보여줄까?

실은 쥐도 새도 모르게 배웠습니다(…)

Page 31: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

123456789101112

from flask import Flaskfrom flask import render_templatefrom flask import requestimport sysapp = Flask(__name__)

@app.route(“/”)def hello(): return render_template(“index.html”)

if __name__ == “__main__”: app.run()

return render_template(“index.html”)

Page 32: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

렌더러 (Render-er)Flask에서 파라미터를 받아 프론트앤드에서 띄워줌

Page 33: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

1

URL이랑 를 받아라

2

ㅇㅎ ㅇㅋㅇㅋ ㄱㄷ

3

받아서 띄운다~

요 함수에는 요걸 보여줘야함HTML이랑 파라미터 보낸다

저번시간 +a

빈칸들 채우고!

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 34: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Q. 다음 빈칸에 맞는 파라미터를 찾아 넣으시오.

<html><head> <meta charset=“UTF-8”></head><body> <p> </p> <!—— name을 받아 넣을것임 ——></body></html>

(가)

Page 35: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Q. 다음 빈칸에 맞는 파라미터를 찾아 넣으시오.

<html><head> <meta charset=“UTF-8”></head><body> <p> </p> <!—— name을 받아 넣을것임 ——></body></html>

{{ name }}

Page 36: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

HTML에 구멍을 뚫고 Flask로 구멍을 메꿔준다

물론 구멍 안에는 파이썬 코드들을 사용할 수 있다

Page 37: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

123456789

{{ parameter }}

{% if name==“배주웅” %}{% elif name=“김효준” %}{% else %}{% endif} %}

{% for … in … %}{% endfor %}

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

기본적으로 파라미터를 출력할 때

파이썬의 if 문도 사용 가능하고,

파이썬의 for문 역시 사용 가능합니다.

Page 38: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

12345

<form method=“POST” action=“/post_check”> <input type=“text” name=“title” placeholder=“제목”> <textarea name=“content” placeholder=“내용”></textarea> <input type=“submit” value=“올리기”></form>

12

<h1>{{title}}</h1><p>{{content}}</p>

Page 39: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

1234

@app.route(“/params_check”)def params_check(): return render_template(“params_check.html”, name=request.args[‘name’])

지난 이야기 그래서 오늘은 블로그에는 무엇이 필요할까 MySQL과 친해지길 바래 렌더러는 무엇일까? 빡코딩

Page 40: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

시애수애수자주 볼 정도로 사랑하고, 한계까지 익혀라

修涯數愛視

Page 41: [나만의블로그개발하기] 03 글쓰고 읽기, 리스트 보기

감사합니다!글 쓰고 읽기. 쓴 글의 리스트 보기

수업때 만나요 :)