๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python/ETC

[Django] ์žฅ๊ณ  ์•„ํ†ฐ(Atom)์—๋””ํ„ฐ ์‚ฌ์šฉํ•œ ์„ธํŒ… :: ๋งˆ์ด์ž๋ชฝ

by ๐ŸŒปโ™š 2019. 4. 7.

Django

์žฅ๊ณ ๋Š” Python์–ธ์–ด๋ฅผ ์ด์šฉํ•œ ๊ฒฝ๋Ÿ‰ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

๊ฐ€์žฅ ๋Œ€์ค‘์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” Spring MVC ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฒฝ๋Ÿ‰ํ™” ์‹œ์ผœ MTVํ˜•ํƒœ๋กœ ๋˜์–ด์žˆ๋‹ค.

๋”์ด์ƒ ์„ค๋ช…์ด ํ•„์š” ์—†๊ณ  ๊ทธ๋ƒฅ ๊ฒฝ๋Ÿ‰ํ™”๋˜์–ด ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์„ ํš๊ธฐ์ ์œผ๋กœ ๋‹จ์ถ•์‹œ์ผœ์ค€๋‹ค.

 

-Model : ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๋ถ€๋ถ„์œผ๋กœ MVC์—์„œ์˜ M์˜ ์—ญํ• ๊ณผ ๊ฐ™๋‹ค.

-Template : MVCํŒจํ„ด์˜ View ์—ญํ• ๋กœ ์‚ฌ์šฉ์ž์—์„œ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„์ด๋‹ค.

-View : MVCํŒจํ„ด์˜ View์™€๋Š” ๋‹ค๋ฅด๊ฒŒ url ํŒŒ์‹ฑ์—ญํ• ์„ ํ•ด์ฃผ๊ณ  Model๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ›์•„์™€ Template์œผ๋กœ ๋ฟŒ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

Django ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ 3๊ฐ€์ง€ ~ 4๊ฐ€์ง€ ์„ธํŒ…์ด ์‚ฌ์ „์— ํ•„์š”ํ•˜๋‹ค.

-Python ์„ค์น˜ (์•„๋‚˜์ฝ˜๋‹ค : https://myjamong.tistory.com/38, ์ผ๋ฐ˜ ํŒŒ์ด์ฌ ์„ค์น˜ํ•ด๋„ ๋ฌด๊ด€)

-Python ๊ฐ€์ƒํ™˜๊ฒฝ ์„ธํŒ… (https://myjamong.tistory.com/97)

-์—๋””ํ„ฐ (Atom ์‚ฌ์šฉ์‹œ ์•„๋ž˜ ์ฐธ์กฐ)

-Database(์„ ํƒ์‚ฌํ•ญ)

Atom ์—๋””ํ„ฐ

์—ฌ๋Ÿฌ ์—๋””ํ„ฐ์ค‘ ํ•„์ž๋Š” Django๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ• ๋•Œ Atom ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค.

https://atom.io/

 

A hackable text editor for the 21st Century

At GitHub, we’re building the text editor we’ve always wanted: hackable to the core, but approachable on the first day without ever touching a config file. We can’t wait to see what you build with it.

atom.io

ํ•ด๋‹น ์šด์˜์ฒด์ œ์— ๋งž๊ฒŒ  Atom์—๋””ํ„ฐ๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค.

์•„ํ†ฐ ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ„ฐ๋ฏธ๋„์ด๋‚˜ ์ปค๋งจ๋“œ์ฐฝ์—์„œ atom . ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œ์ผœ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„๋กœ ํŒŒ์ผ๋“ค์„ ์ „๋ถ€ ์—ด์–ด์ค€๋‹ค.

 

Atom ์ž๋™์™„์„ฑ๊ธฐ๋Šฅ Install

ํŽธ์•ˆํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ฐ–์ถ”๊ธฐ ์œ„ํ•ด Atom์—์„œ ์„ค์น˜๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€ ๋ช‡๊ฐœ๋ฅผ ๋ฐ›์•„์ค€๋‹ค.

1. Python ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ(autocomplete-python)

2. Django ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ(atom-django)

 

ํŒจํ‚ค์ง€ ์„ค์น˜๋Š” Atom - Preferences - Install ํƒญ์—์„œ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

python ์ž๋™์™„์„ฑ ํŒจํ‚ค์ง€

django ์ž๋™์™„์„ฑ ํŒจํ‚ค์ง€

 

Django ์„ค์น˜

์žฅ๊ณ  ์„ค์น˜๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค.

๊ฐ€์ƒํ™˜๊ฒฝ์— ์ ‘์†ํ•˜์—ฌ pip๋ฅผ ์ด์šฉํ•ด์„œ ์„ค์น˜ํ•œ๋‹ค.

 

๊ฐ€์ƒํ™˜๊ฒฝ ์ ‘์†

workon python3_env

 

์žฅ๊ณ  ์„ค์น˜

pip install django

 

์žฅ๊ณ  ์„ค์น˜ ๋๋‚ฌ๋‹ค.

 

Django ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„œ๋ฒ„ ์‹คํ–‰

 Django ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  App๋„ ์ƒ์„ฑ์„ ํ•œ๋‹ค.

๊ธฐํƒ€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด Django ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ด๊ธ€์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹คํ–‰๊นŒ์ง€๋งŒ ํ•„์š”ํ•œ ๋ช…๋ น์–ด๋“ค์„ ์‚ฌ์šฉํ• ๊ฑฐ๋‹ค.

 

Django ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

first_project๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํ”„๋กœ์ ํŠธํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

django-admin startproject first_project

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์„ค์ •์€ ์•„๋ž˜ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ๋“ค์—์„œ ์„ค์ •ํ•œ๋‹ค.

 

Django App ์ƒ์„ฑ

first_app๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ Appํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋ช…๋ น์€ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ ๊ฐ™์ด ๋งŒ๋“ค์–ด์ง„ manage.py ํŒŒ์ผ์„ ์ด์šฉํ•œ๋‹ค.

./manage.py startapp first_app

App์— ๋Œ€ํ•œ ๋ชจ๋“  ํŒจํ„ด์„ ๊ด€๋ฆฌํ•œ๋‹ค.

์•„์ง Template์— ๋Œ€ํ•œ ๊ตฌ์กฐ๋Š” ์—†๋Š”๋ฐ... ๊ฐœ๋ฐœ์‹œ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

์„œ๋ฒ„์‹คํ–‰

์ด์ƒ์—†์ด ์ƒ์„ฑ์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ด๋ณธ๋‹ค.

ํŠน์ • ํฌํŠธ๋กœ ์ง€์ •ํ•ด์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” runserver ๋ช…๋ น ๋’ค์— ํ•ด๋‹น ํฌํŠธ๋ฅผ ์ธ์ž๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. default๋Š” 8000๋ฒˆ ํฌํŠธ์ด๋‹ค.

./manage.py runserver

์•„๋ž˜์™€ ๊ฐ™์ด ๊ธฐ๋ณธ ์ธ๋ฑ์Šค ํ™”๋ฉด์ด ์ƒ์„ฑ๋˜๋ฉด ์„ฑ๊ณต์ด๋‹ค.

 

 

 

์‹คํ–‰์‹œ ์•„๋ž˜์™€ ๊ฐ™์ด  migration๊ด€๋ จ๋œ warning์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” ๊ด€๋ฆฌ์ž ๋ฐ ๊ถŒํ•œ, ์„ธ์…˜, DB๊ด€๋ จ๋œ ์ •๋ณด๋“ค์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•œ๋‹ค.

DB ์„ค์ •๊ด€๋ จ๋œ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ด๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋ช…๋ น ๋ฐ ์„ค๋ช…์„ ์ง„ํ–‰ํ• ๊ฑฐ๋‹ค.

๋Œ“๊ธ€