๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ 74

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 8. ๋ชฉ๋กํŽ˜์ด์ง€ - ๋‹จ์–ด ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ

jinja2๋กœ ๋‹จ์–ด ๋ชฉ๋ก ํ…Œ์ด๋ธ” DB์— ์ €์žฅ๋œ ๋‹จ์–ด ๋ชฉ๋ก์„ ๊ฐ€์ ธ์™€ ํ…Œ์ด๋ธ”์„ ์ฑ„์›€. โœ… app.py - words ์ปฌ๋ ‰์…˜์˜ ๋‹จ์–ด๋“ค์„ ๊ฐ€์ ธ์™€ ๋„˜๊ฒจ์คŒ. @app.route('/') def main(): # DB์—์„œ ์ €์žฅ๋œ ๋‹จ์–ด ์ฐพ์•„์„œ HTML์— ๋‚˜ํƒ€๋‚ด๊ธฐ words = list(db.words.find({}, {"_id": False})) # list ์•ˆ์— db.words.find๋กœ ์กฐ๊ฑด ์—†๋Š” ๋ชจ๋“  ๋‹จ์–ด {}๋ฅผ ์ฐพ์Œ. ์ฆ‰, words๋Š” ๋‚ด db์— ์ €์žฅ๋œ ๋ชจ๋“  ๋‹จ์–ด๋“ค์˜ ๋ฆฌ์ŠคํŠธ. # _id๋Š” mongodb์—์„œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” id์ธ๋ฐ ์ž๋ฃŒํ˜•์ด ํŠน์ดํ•ด์„œ _id๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ render_template์— ๋„ฃ์œผ๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— False. return render_template("index.html"..

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 7. ์ƒ์„ธํŽ˜์ด์ง€ - ์ €์žฅ & ์‚ญ์ œ ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ

1. ์ƒˆ ๋‹จ์–ด / ๊ธฐ์กด ๋‹จ์–ด ๊ตฌ๋ถ„ โœ… url ์˜ˆ์‹œ localhost:5000/detail/hello?status_give=new ⇒ ๐Ÿ’พ ๋ฒ„ํŠผ localhost:5000/detail/hello?status_give=old ⇒ ๐Ÿ—‘๏ธ๋ฒ„ํŠผ status_receive = request.args.get("status_give", "new") # status_give ๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ status_receive ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ›์Œ # status_give ๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฃผ์ง€ ์•Š์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด, ๊ธฐ๋ณธ๊ฐ’์„ "new"๋กœ ์ฃผ๋„๋ก ํ•จ. return render_template("detail.html", word=keyword, result=result, status=status_receive) # detail.html์— s..

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 6. ์ƒ์„ธํŽ˜์ด์ง€ - jinja2๋กœ ๋‹จ์–ด ๋œป ๊ฐ€์ ธ์˜ค๊ธฐ

Jinja2 ํ…œํ”Œ๋ฆฟ ์–ธ์–ด Flask ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์–ธ์–ด. ‘ํ…œํ”Œ๋ฆฟ’์ด ๋˜๋Š” Html ๋ฌธ์„œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ณณ์„ ํ‘œ์‹œํ•ด๋†“๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ด์ฐธ > setting > Template Languages > Jinja2 ์„ค์ • โœ… Owlbot API ์š”์ฒญ Flask r = requests.get(f"", headers={"Authorization": "Token [๋‚ดํ† ํฐ]"}) result = r.json() print(result) โœ… jinja2๋ฅผ ์ด์šฉํ•ด์„œ detail.html์— ๊ฐ’์„ ์ฑ„์›Œ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด detil.html๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” detail ํ•จ์ˆ˜ ์•ˆ์— ์‚ฌ์ „ API์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š” ๋ถ€๋ถ„์ด ํ•„์š”. @app.route('/detail/') def detail(keywo..

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 5. ์ƒ์„ธํŽ˜์ด์ง€ - Ajax๋กœ ๋‹จ์–ด ๋œป ๊ฐ€์ ธ์˜ค๊ธฐ

Ajax ๊ธฐ๋ณธ ๊ณจ๊ฒฉ $.ajax({ type: "GET", //GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ url: "์—ฌ๊ธฐ์—URL์„์ž…๋ ฅ", //์š”์ฒญํ•  url data: {}, //์š”์ฒญํ•˜๋ฉด์„œ ํ•จ๊ป˜ ์ค„ ๋ฐ์ดํ„ฐ (GET ์š”์ฒญ ์‹œ์—” ๋น„์›Œ๋‘ ) success: function(response){ //์„ฑ๊ณตํ•˜๋ฉด, response ๊ฐ’์— ์„œ๋ฒ„์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‹ด์•„์„œ ํ•จ์ˆ˜ ์‹คํ–‰ console.log(response) } }) html์—์„œ ๋‹จ์–ด ๋œป ๋ณด์—ฌ์ฃผ๊ธฐ โœ… API์—์„œ ๋‹จ์–ด ๋œป ์ฐพ์•„์„œ ๊ฒฐ๊ณผ ๋ณด๋‚ด์ฃผ๊ธฐ @app.route('/detail/') def detail(keyword): # API์—์„œ ๋‹จ์–ด ๋œป ์ฐพ์•„์„œ ๊ฒฐ๊ณผ ๋ณด๋‚ด๊ธฐ return render_template("detail.html", word=keyword) # ๋ฅผ detail.html์— word๋ผ..

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 4. ํ”„๋กœ์ ํŠธ ์„ธํŒ…

โœ… AWS ์„œ๋ฒ„์™€ MongoDB ์—ฐ๊ฒฐ (app.py) client = MongoClient('15.164.98.36', 27017, username="test", password="test") db = client.dbsparta_plus_week2 ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœํ•  ๋•Œ AWS ์„œ๋ฒ„์— ์žˆ๋Š” MongoDB๋ฅผ ๋ฐ”๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ฝ”๋”ฉํ•˜๋ฉด ๋‚˜์ค‘์— ๋ฐฐํฌํ•  ๋•Œ DB๋ฅผ ๋ณต์‚ฌํ•ด ์˜ฎ๊ธธ ํ•„์š”๊ฐ€ ์—†์–ด ํŽธํ•จ.

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 3. OWLBOT API (์‚ฌ์ „ API) ์‚ฌ์šฉ

โœ… ์˜์–ด ์‚ฌ์ „ API - OWLBOT API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹จ์–ด, ๋œป, ์˜ˆ๋ฌธ ๊ฐ€์ ธ์™€์•ผํ•จ. โœ… ์˜์–ด ์‚ฌ์ „ Open API Owlbot English Dictionary API Owlbot English Dictionary API owlbot.info โœ… get a token ํด๋ฆญํ•ด์„œ ์ด๋ฉ”์ผ ์ž‘์„ฑ ํ›„, ์ด๋ฉ”์ผ๋กœ API ํ‚ค ๋ฐ›๊ธฐ โœ… ํŒŒ์ด์ฌ์œผ๋กœ API์— ์š”์ฒญ ๋ณด๋‚ด๊ธฐ r = requests.get("", headers={"Authorization": "Token [ํ† ํฐ]"}) result = r.json() print(result) โœ… Ajax๋กœ ์š”์ฒญ ๋ณด๋‚ด๊ธฐ $.ajax({ type: "GET", url: "", beforeSend: function (xhr) { xhr.setRequestHeader("Authori..

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 2. Flask๋กœ ๋ฉ€ํ‹ฐ ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

1. Flask ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™์‹œ์ผœ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ฆ‰, ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์ผ๋“ค์„ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค. 2. ํŒจํ‚ค์ง€ ์„ค์น˜ Project Interpreter ๊ฐ€์ƒํ™˜๊ฒฝ์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ : flask, requests, pymongo 3. ๊ธฐ๋ณธ ํด๋” ๊ตฌ์„ฑ static ํด๋” : ์ด๋ฏธ์ง€, cssํŒŒ์ผ templates : html ํŒŒ์ผ app.py ํŒŒ์ผ : flask๋ฅผ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ด์ฌ ์ฝ”๋“œ 4. Flask ์‹œ์ž‘์ฝ”๋“œ (app.py) (ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์™ธ์šธ ํ•„์š” X) from flask import Flask, render_template app = Flask(__name__) @app.route('/') def main(): return render_template("index.html") @app.rou..

[๋‚˜๋งŒ์˜ ๋‹จ์–ด์žฅ] 1. ์ „์ฒด ํ๋ฆ„ ํŒŒ์•…

1. ๊ธฐ๋Šฅ ํŒŒ์•…ํ•˜๊ธฐ ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๋ถ„๋ฅ˜ ์†์„ฑ ๋ฉ”์ธํŽ˜์ด์ง€ ๋ฐฐ๋„ˆ ๋ฉ”์ธํŽ˜์ด์ง€ ๊ฒ€์ƒ‰ ๋‹จ์–ด ๋ชฉ๋ก์— ๋‹จ์–ด๊ฐ€ ์žˆ์œผ๋ฉด ๋‹จ์–ด์žฅ ํ•˜์ด๋ผ์ดํŠธ ๋ฐ ๋‹จ์–ด ์œ„์น˜๋กœ ์Šคํฌ๋กค ๋‹จ์–ด๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด์ด๋ฉด ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™ ์‚ฌ์ „์— ์—†๋Š” ๋‹จ์–ด์ด๋ฉด '์—†๋Š” ๋‹จ์–ด' alret ๋ฉ”์ธํŽ˜์ด์ง€ ๋‹จ์–ด ๋ชฉ๋ก DB์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋‹จ์–ด์˜ ๋‹จ์–ด, ๋œป์„ ๋ณด์—ฌ์คŒ ๋ฉ”์ธํŽ˜์ด์ง€ ๋‹จ์–ด ๋ชฉ๋ก ๋‹จ์–ด ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™ ๋ฉ”์ธํŽ˜์ด์ง€ ๋‹จ์–ด ๋ชฉ๋ก ๋‹จ์–ด ๋œป ์ƒ์„ธํŽ˜์ด์ง€ ๋‹จ์–ด๋ฐ•์Šค ์ƒˆ ๋‹จ์–ด ๋‹จ์–ด ๋ชฉ๋ก์— ๋‹จ์–ด๊ฐ€ ์—†๋Š” ์ƒˆ ๋‹จ์–ด์ด๋ฉด Save ์•„์ด์ฝ˜ ํ‘œ์‹œ ํด๋ฆญ ์‹œ ๋‹จ์–ด DB์— ์ €์žฅํ•˜๊ณ , Delete ์•„์ด์ฝ˜์œผ๋กœ ๋ฐ”๋€œ ์ƒ์„ธํŽ˜์ด์ง€ ๋‹จ์–ด๋ฐ•์Šค ๊ธฐ์กด ๋‹จ์–ด ๋‹จ์–ด ๋ชฉ๋ก์— ๋‹จ์–ด๊ฐ€ ์žˆ๋Š” ๊ธฐ์กด ๋‹จ์–ด์ด๋ฉด Delete ์•„์ด์ฝ˜ ํ‘œ์‹œ ํด๋ฆญ ์‹œ ๋‹จ์–ด DB์—์„œ ์‚ญ์ œํ•˜๊ณ , Save ์•„์ด์ฝ˜์œผ๋กœ ๋ฐ”๋€œ ์ƒ์„ธํŽ˜์—..

[CSS] CSS ๋ฐ•์Šค ๋ชจ๋ธ (box model)

โœ… CSS ๋ฐ•์Šค ์˜์—ญ ๋ฐ”๊นฅ ์—ฌ๋ฐฑ ์˜์—ญ (Margin Area) ํ…Œ๋‘๋ฆฌ ์˜์—ญ (Border Area) ์•ˆ์ชฝ ์—ฌ๋ฐฑ ์˜์—ญ (Padding Area) ๋‚ด์šฉ ์˜์—ญ (Content Area) โœ… ๊ฐ ์˜์—ญ์„ ๊พธ๋ฐ€ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ ๋ฐ”๊นฅ ์—ฌ๋ฐฑ : margin ์†์„ฑ ํ…Œ๋‘๋ฆฌ : border ์†์„ฑ ์•ˆ์ชฝ ์—ฌ๋ฐฑ : padding ์†์„ฑ ๋ฐ•์Šค ๊ฐ€๋กœ ํฌ๊ธฐ : width ์†์„ฑ ๋ฐ•์Šค ์„ธ๋กœ ํฌ๊ธฐ : height ์†์„ฑ ๋ฐ•์Šค ํฌ๊ธฐ ๊ธฐ์ค€ : box-sizing ์†์„ฑ ๋ฐ•์Šค์˜ ๋ฐฐ๊ฒฝ : background ์†์„ฑ โœ… ์†์„ฑ ์ถ•์•ฝ ํ‘œํ˜„ (shorthand) 4๊ฐœ ์†์„ฑ : top, right, bottom, left (์‹œ๊ณ„๋ฐฉํ–ฅ !) 3๊ฐœ ์†์„ฑ : top, right/left, bottom 2๊ฐœ ์†์„ฑ : top/bottom, right/left 1๊ฐœ ์†์„ฑ ..

[DB] RDBMS ์•Œ์•„๋ณด๊ธฐ

๐Ÿฑ RDBMS ์•Œ์•„๋ณด๊ธฐ 1. RDBMS โœ… RDBMS๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. โœ… ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์„œ๋น„์Šค์˜ ๋ฉ”์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” NoSql์ด ์•„๋‹ˆ๋ผ RDBMS. โœ… ์—‘์…€๊ณผ ๊ฐ™์€ ํ‘œ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ. โœ… ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ๋•Œ column์ด ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์ €์žฅ๋˜๋ฉด column์„ ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์Œ. โœ… ํ…Œ์ด๋ธ”์„ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ด๋ธ”๊ธฐ์ง€ ์—ฐ๊ฒฐ๋จ โœ… RDBMS์—์„œ R์€ Relation์„ ์˜๋ฏธํ•จ โœ… ์ œํ’ˆ์—๋Š” Oracle, MySql, postgreSQL, Mssql์ด ์žˆ์Œ. 2. NoSql โœ… JSON ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ. โœ… ๋„ํ๋จผํŠธ๋ผ๋Š” RDBMS์˜ ํ…Œ์ด๋ธ”๊ณผ ๋น„์Šทํ•œ ๊ณณ์— ์ €์žฅ๋จ. โœ… ๋„ํ๋จผํŠธ๋Š” ์ƒ์„ฑ๋  ๋•Œ ์ปฌ๋Ÿผ์ด ๊ณ ์ •๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์— ์šฉ์ดํ•จ. ..

๋ฐ˜์‘ํ˜•