๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

728x90

Django

3/14 ์›”_์ธํ„ฐํŽ˜์ด์Šค ํ”„๋กœ์ ํŠธ ์˜ค๋žœ๋งŒ!! ๋“œ๋””์–ด ์ธํ„ฐํŽ˜์ด์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๋˜์—ˆ๋‹ค! 2/22 ํ™”์š”์ผ๋ถ€ํ„ฐ 3/9 ์ˆ˜์š”์ผ๊นŒ์ง€ 16์ผ ๋™์•ˆ ์ž‘์—…ํ•˜๊ณ , 3/14 ์˜ค๋Š˜! ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฏธ๋ฆฌ ๋Œ€๋ณธ์„ ๋งŒ๋“ค์–ด ๋ฐœํ‘œ๋ถ€ํ„ฐ ์‹œ์—ฐ๊นŒ์ง€ ์˜์ƒ์œผ๋กœ ์ดฌ์˜ํ•จ. ์˜ˆ๋ฐฉ์ ‘์ข… ํ˜„ํ™ฉ API๋ž‘ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์ƒ์„ธ ํŽ˜์ด์ง€ ์›น๋””์ž์ธ ๋งŒ์ง„ ๊ฑฐ(์ƒ‰๊น” ํ†ต์ผ) GitHub์— ์˜ฌ๋ ธ๋Š”๋ฐ, ์˜์ƒ์— ๋ฐ˜์˜์ด ์•ˆ ๋ผ์„œ ๋„ˆ๋ฌด ์•„์‰ฝ๋‹ค. ๐Ÿ˜‚ 1์กฐ - ์˜ํ™” ์ปค๋ฎค๋‹ˆํ‹ฐ : ์†Œ์…œ(์นด์นด์˜ค ๊ณ„์ •) ์—ฐ๋™ ํšŒ์›๊ฐ€์ž… 2์กฐ - ๋ง›์ง‘ ์ปค๋ฎค๋‹ˆํ‹ฐ : Map API 3์กฐ - ์‡ผํ•‘๋ชฐ : ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๋Œ“๊ธ€ ์ˆ˜ ์ˆœ์œผ๋กœ ์ œํ’ˆ ์ถ”์ฒœ 4์กฐ - ์ฝ”๋กœ๋‚˜ ์ปค๋ฎค๋‹ˆํ‹ฐ : Map API(๋ณ‘์› · ์•ฝ๊ตญ ๋งˆํ‚น), ์˜ˆ๋ฐฉ์ ‘์ข… · ํ™•์ง„์ž ํ˜„ํ™ฉ API, ์ž๊ฐ€์ง„๋‹จ, ์ „๋ฌธ์˜ ์ƒ์ฃผ ๊ฒŒ์‹œํŒ 5์กฐ - ์˜ํ™” · TV ํ”„๋กœ๊ทธ๋žจ ๊ฒ€์ƒ‰ : ์žฅ๋ฅด์— ๋”ฐ๋ผ.. ๋”๋ณด๊ธฐ
2/21 ์›” ์›”์š”์ผ! ์˜ค๋Š˜์€ Django์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ์‚ฌ์šฉ์ž ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์˜คํ›„ 3์‹œ๋ถ€ํ„ฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ๋ฐœ ์ˆ˜์—…์— ๋Œ€ํ•œ ์‹œํ—˜์ด ์žˆ๊ณ , ์˜คํ›„ 4์‹œ๋ถ€ํ„ฐ ํŒ€ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰! 1. users app ๋งŒ๋“ค๊ณ  lecture ํด๋”์˜ settings.py์— ์•ฑ ๋“ฑ๋ก ↓PyCharm Terminal↓, ↓settings.py↓ python manage.py startapp users # PyCharm Terminal -------------------------------- INSTALLED_APPS = [ # lecture ํด๋”์˜ settings.py 'users.apps.UsersConfig' ] 2. MySQL์—์„œ auth_user์˜ DESC ๋ณด๊ธฐ. username์ด id 3. auth_user D.. ๋”๋ณด๊ธฐ
2/18 ๊ธˆ ์•œ ๋ถˆ๊ธˆ!!!!! ๐Ÿฑ‍๐Ÿ๐Ÿฑ‍๐Ÿ‘ค ์˜ค๋Š˜์€ ์–ด์ œ ์ถ”๊ฐ€ํ–ˆ๋˜ ๊ฒŒ์‹œํŒ ๊ธ€ ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ๋„ฃ์—ˆ๋˜ ๋ฒ„ํŠผ๋“ค์˜ ๊ธฐ๋Šฅ์„ ์‹คํ˜„์‹œํ‚จ๋‹ค. ์˜คํ›„ 3์‹œ ๋ฐ˜ ์ •๋„์— ๊ฒŒ์‹œํŒ ๊ตฌํ˜„์„ ๋งˆ๋ฌด๋ฆฌ ์ง“๊ณ , ํŽธ์„ฑ๋œ ์กฐ๋ณ„๋กœ ์†ŒํšŒ์˜์‹ค์—์„œ ๋‚˜๋จธ์ง€ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋‹ค. ํŒ€์›๋“ค๊ณผ ์•„์ด์Šค๋ธŒ๋ ˆ์ดํ‚น, ์›น ํ”„๋กœ์ ํŠธ ์ฃผ์ œ ์„ ์ •, ์Šคํ† ๋ฆฌ ๋ณด๋“œ ์ž‘์„ฑํ•จ~ ์›”์š”์ผ์—๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ๋ฐœ ์ˆ˜์—…์— ๋Œ€ํ•œ ์ฒซ ํ‰๊ฐ€(ํ•„๋‹ต)๊ฐ€ ์žˆ์„ ์˜ˆ์ •! ์ฃผ๋ง ๋™์•ˆ ์—ฌํƒœ ๋ฐฐ์šฐ๋ฉฐ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ๋‹ค์‹œ ์ ๊ฒ€ํ•˜๊ณ , ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ์„ ๋งˆ์ € ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. 1. ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ JavaScript event ๋ฐฉ์‹(Delegation Model)์œผ๋กœ ์ฒ˜๋ฆฌ ↓detail.html↓ ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ↓menu_btn.js↓ function to_list() { document.location.href = .. ๋”๋ณด๊ธฐ
2/17 ๋ชฉ ๋ชฉ์š”์ผ! ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ, ์ˆ˜์ •, ์‚ญ์ œ, ์ข‹์•„์š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์„ ์—ฌํƒœ ๋ฐฐ์šด ๊ฒƒ์„ ์‘์šฉํ•ด ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์–ด๋ ต๋‹ค์•„์•„์•„์•„! ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๋ง๊ณ ๋Š” ๊ฐ์ด ์•ˆ ์žกํ˜€.. 1. HTML ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์–‘์‹(์ž…๋ ฅ Form)์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, Django๊ฐ€ ์ œ๊ณตํ•˜๋Š” Model Form(class)๋ฅผ ์ด์šฉํ•จ bbs App ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— forms.py ์ƒ์„ฑํ•˜๊ณ  Django์—์„œ forms ๋ชจ๋“ˆ, bbs.models์—์„œ class๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„ form์— ๋Œ€ํ•œ class ์ •์˜ํ•จ ↓forms.py↓ from django import forms from bbs.models import Board class BoardForm(forms.ModelForm): class Meta: model =.. ๋”๋ณด๊ธฐ
2/16 ์ˆ˜ ์ˆ˜์š”์ผ! ์˜ค๋Š˜์€ Django๋กœ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ ๋‹ค. 1. ๋ฃจํŠธ ๋””ํ…ํ„ฐ๋ฆฌ ๋ฐ”๋กœ ๋ฐ‘์— ํ…œํ”Œ๋ฆฟ์„ ๋ชจ์•„ ์ €์žฅํ•  ๋””ํ…ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , settings.py ํŒŒ์ผ์—์„œ os ๋ชจ๋“ˆ(๊ฒฝ๋กœ์™€ ํŒŒ์ผ๋ช…์„ ํ•ฉ์นจ)์„ import ํ•œ ํ›„์— ํ…œํ”Œ๋ฆฟ ๋””ํ…ํ„ฐ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•จ os.path.join(๊ฒฝ๋กœ, 'ํŒŒ์ผ๋ช…') → C:/python-django/LectureSampleProject_0216/template ํŒŒ์ผ๋“ค 2. Static files(CSS, JS, images)์€ client์˜ request URL์—์„œ ๋‚˜์˜ค๋Š” ํ˜•ํƒœ์ด๋ฏ€๋กœ, ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ”๋กœ ๋ฐ‘์— static ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  settings.py ํŒŒ์ผ์—์„œ static ๋””ํ…ํ„ฐ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•จ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ”๋กœ ๋ฐ‘์— media ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  Media ํŒŒ์ผ(client๊ฐ€ server์—.. ๋”๋ณด๊ธฐ
2/15 ํ™” ํ™”์š”์ผ! PyCharm์œผ๋กœ ์ง€๋‚œ๋ฒˆ์— ํ–ˆ๋˜ Project(MyFirstWeb_0215) ์ƒ์„ฑ, Django ์„ค์น˜ ๋ฐ MySQL ์—ฐ๋™์„ ๋˜‘๊ฐ™์ด ์ง„ํ–‰ํ–ˆ๋‹ค. 1. ์˜ค๋Š˜์€ templates ํด๋” ์•ˆ์— ์ถ”๊ฐ€๋กœ polls ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  index.html ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์คŒ 2. HttpResponse ์•ˆ์— ์งˆ๋ฌธ์„ ํด๋ฆญํ•˜๋ฉด question.id๊ฐ€ ์—ฐ๊ฒฐ๋˜๋„๋ก link ์†์„ฑ ์ง€์ •ํ•˜๊ธฐ 3. urls.py(polls URLConf) ํŒŒ์ผ์—์„œ question_id์— ๋Œ€ํ•œ URLConf์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•จ 4. polls App์— ํ•ด๋‹น๋˜๋Š” URL๋กœ ์ง„์ž…(request)ํ•˜๋ฉด view๋กœ detailํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฏ€๋กœ ์ด๋ฅผ ์ •์˜ํ•ด์•ผ ํ•จ 5. templates/polls ํด๋” ์•ˆ์— detail๋ผ๋Š” HTML ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์คŒ 6. polls.. ๋”๋ณด๊ธฐ
2/14 ์›” ์›”์š”์ผ! ๐Ÿฑ‍๐Ÿ‰ ์ง€๋‚œ ๊ธˆ์š”์ผ์— ์ด์–ด PyCharm๊ณผ MySQL์„ ์ด์šฉํ•ด Django๋ฅผ ๋ฐฐ์šด๋‹ค! PyCharm์œผ๋กœ ์ง€๋‚œ๋ฒˆ์— ํ–ˆ๋˜ Project(MyFirstWeb_0214) ์ƒ์„ฑ, Django ์„ค์น˜ ๋ฐ MySQL ์—ฐ๋™์„ ๋˜‘๊ฐ™์ด ์ง„ํ–‰ํ–ˆ๋‹ค. 1. MySQL๋กœ DB Table์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, PyCharm์—์„œ Python ๋ชจ๋“ˆ ์ค‘ models๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ class๋ฅผ ๋งŒ๋“ฆ polls ํด๋”์˜ models.py ํŒŒ์ผ ์•ˆ์— class๋กœ DB Table ๋ช…์„ธ๋ฅผ ์„ค์ •ํ•จ. model class๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ model.Model์„ ์ƒ์†ํ•ด์•ผ ํ•จ. PK(Primary Key)๊ฐ€ ์ž๋™์œผ๋กœ ํ•˜๋‚˜ ์„ค์ •๋จ from django.db import models class Question(models.Model): # id = .. ๋”๋ณด๊ธฐ
2/11 ๊ธˆ ๐Ÿ˜Ž ์ด์•ผ์•„์•„์•„ ๋ถˆ๊ธˆ!! ๐Ÿ˜Ž ํ”„๋ŸฐํŠธ์—”๋“œ ๋๋‚ด๊ณ , ๋ฐฑ์—”๋“œ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. Python์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ Web Application Framework, Django! WSGI(Web Server Gateway Interface) : Web์„œ๋ฒ„๊ฐ€ ๋ฐ›์€ ํ˜ธ์ถœ์„ Python ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์‘๋‹ต๋ฐ›๊ธฐ ์œ„ํ•œ ํ˜ธ์ถœ ์กฐ์•ฝ(Calling Convention) Private Physical Server ์œ„์˜ ๋…น์ƒ‰ ์„ ์œผ๋กœ ๊ทธ๋ ค์ง„ ๋ชจ๋“  ๊ฒƒ๋“ค์„ ํ•ฉ์ณ์„œ WAS(Web Application Server)๋ผ๊ณ  ๋ถ€๋ฆ„ Application์„ ๋‹ด์„ Web Server๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์›€ ๊ทธ๋ฆฌ๊ณ  ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ง„ WSGI module๊ณผ WSGI Process๋ฅผ ํ•ฉ์ณ์„œ WSGI middleware๋ผ๊ณ  ๋ถ€๋ฆ„ ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ.. ๋”๋ณด๊ธฐ

728x90