Study Anything ๐Ÿง

[Django] ๊ธฐ๋ณธ ๊ฐœ๋… (์•ฑ, ๋ชจ๋ธ, ๊ด€๋ฆฌ์ž) ๋ณธ๋ฌธ

์Šคํ„ฐ๋””/Web

[Django] ๊ธฐ๋ณธ ๊ฐœ๋… (์•ฑ, ๋ชจ๋ธ, ๊ด€๋ฆฌ์ž)

์†” 2022. 1. 6. 21:57

์ฐธ๊ณ : https://wikidocs.net/73306

 

 

(1) ์•ฑ

์žฅ๊ณ ์—์„œ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด '์•ฑ'์ด๋ผ๋Š” ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

ํ”„๋กœ์ ํŠธ์— ์•ฑ์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

(mysite) C:\(์ƒ๋žต)\DjangoProj\mysite>django-admin startapp myapp	#์•ฑ ์ด๋ฆ„: myapp

 

์•ฑ์ด ์ƒ์„ฑ๋˜์—ˆ์œผ๋‹ˆ ํ•„์š”ํ•œ ๋‚ด์šฉ๊ณผ ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ์„ IDE์—์„œ ์ž‘์„ฑํ•˜๊ณ  ๊ฐœ๋ฐœ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•œ ๋‹ค์Œ

์ฃผ์†Œ ๋’ค์— '/myapp' ๋ฅผ ๋ถ™์ด๋ฉด ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋œ ์›น ํŽ˜์ด์ง€๊ฐ€ ๋„์›Œ์ง„๋‹ค.

 

ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด 'ํ”„๋กœ์ ํŠธ/config/urls.py' ์— url ๋งคํ•‘์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

(...)
urlpatterns = [
    (...)
    path('myapp', ํ•จ์ˆ˜๋ช…)
    (...)
]
(...)

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งคํ•‘์„ ์ถ”๊ฐ€ํ•˜๋ฉด 'http://์ฃผ์†Œ/myapp/' url ์ด ์š”์ฒญ๋˜์—ˆ์„ ๋•Œ ๋’ค์— ์—ฐ๊ฒฐ๋œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์ด๊ธฐ ์œ„ํ•ด์„œ 'ํ”„๋กœ์ ํŠธ/์•ฑ/views.py' ํŒŒ์ผ์˜ index ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

์ด ๊ฒฝ์šฐ url ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ urls.py ํŒŒ์ผ์—์„œ 'myapp/' ๊ณผ ๋งคํ•‘๋œ ํ•จ์ˆ˜ 'views/index' ๋ฅผ ์ฐพ์•„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ด ํ๋ฆ„์€ ๋‹ค์Œ ๊ทธ๋ฆผ์„ ๋”ฐ๋ฅธ๋‹ค.

์ถœ์ฒ˜: https://wikidocs.net/70649

 

 

 

(2) ๋ชจ๋ธ

์›น ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด DB๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์žฅ๊ณ ์—์„œ๋Š” ์ด ๊ธฐ๋Šฅ๋„ ์‰ฝ๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ๋Š” DB ์ƒ์„ฑ์„ ์œ„ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ ์žฅ๊ณ ์—์„œ๋Š” ์ฟผ๋ฆฌ ์ž‘์„ฑ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์ด๊ฒƒ์€ ORM ๋•๋ถ„์ธ๋ฐ, ORM์€ 'Object Relational Mapping' ์ด๋ผ๋Š” ๋œป์œผ๋กœ,

DB์˜ ํ…Œ์ด๋ธ”๋“ค์„ ๋ชจ๋ธํ™”ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ์—์„œ๋Š” sqlite3 ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋จผ์ € ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๋งŒ๋“œ๋Š”๋ฐ, ๋ชจ๋ธ์— ํ•„์š”ํ•œ ์†์„ฑ๊ณผ ๋ฐ์ดํ„ฐํƒ€์ž…์„ ์ •ํ•œ๋‹ค.

๊ทธ ํ›„์— 'ํ”„๋กœ์ ํŠธ/myapp/models.py' ํŒŒ์ผ์— ๋ชจ๋ธ์„ ์ •์˜ํ•œ๋‹ค.

๋ฐ์ดํ„ฐํƒ€์ž…์€ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.

https://docs.djangoproject.com/en/3.0/ref/models/fields/#field-types

 

Model field reference | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

๋ชจ๋ธ ์ž‘์„ฑ์ด ๋๋‚˜๋ฉด 'config/settings.py' ํŒŒ์ผ์—์„œ ๋‚ด ์•ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  migrate ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋ชจ๋ธ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— migrate ๋ช…๋ น์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ makemigrations ๋ช…๋ น์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•œ๋‹ค.

migrate ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ด€๋ จ ๋‚ด์šฉ์ด ์ด๋™ํ•ด ๋‚ด ์•ฑ์— ์ ์šฉ๋œ๋‹ค.

(mysite) c:\(...)\DjangoProj\mysite>python manage.py makemigrations

(mysite) c:\(...)\DjangoProj\mysite>python manage.py migrate

 

๋ชจ๋ธ์ด ์ ์šฉ๋˜๊ณ  ๋‚˜๋ฉด ์žฅ๊ณ  ์…ธ์„ ํ†ตํ•ด ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์žฅ๊ณ  ์…ธ๋กœ ์ง„์ž…ํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

(mysite) c:\(...)\DjangoProj\mysite>python manage.py shell
	(...)
>>>

์…ธ์—์„œ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•œ ๋ชจ๋ธ์˜ ์†์„ฑ์„ ๊ณ ๋ คํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

# ์˜ˆ์‹œ
>>> (ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import)
>>> q = Question(subject='pybo๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?', content='pybo์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.', create_date=timezone.now())
>>> q.save()

๋ฐ์ดํ„ฐ ์กฐํšŒ์™€ ์ˆ˜์ •, ์‚ญ์ œ๋Š” ์ฐธ๊ณ  ์ž๋ฃŒ์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค.

 

 

 

(3) ๊ด€๋ฆฌ์ž

์›น ํŽ˜์ด์ง€๋ฅผ ์šด์˜ํ•˜๋‹ค๋ณด๋ฉด ๊ด€๋ฆฌ์ž์˜ ํ•„์š”์„ฑ์„ ๋Š๋ผ๋Š”๋ฐ,

์žฅ๊ณ ์—์„œ๋Š” ๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž, DB ๋ชจ๋ธ ๊ด€๋ฆฌ ๋“ฑ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์€ ๊ณต์‹ ๋ฌธ์„œ์— ์ž์„ธํžˆ ์†Œ๊ฐœ๋˜์–ด ์žˆ๋‹ค.

https://docs.djangoproject.com/en/3.0/ref/contrib/admin/

 

The Django admin site | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

728x90
Comments