๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒŒ | WEB DEV/Django

Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (1)_๊ธฐ์ดˆ

by KASSID 2022. 6. 30.

๋ชฉ์ฐจ

    728x90

    ๋“ค์–ด๊ฐ€๋ฉฐ

    EAGU ๋™์•„๋ฆฌ ํ™œ๋™ ๊ทธ ์ฒซ ๋ฒˆ์งธ๋กœ '๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ'๋ฅผ ํ•ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค

    ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Django๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ํšŒ์žฅ๋‹˜์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฉค๋ฒ„๋“ค์€

    ๋ชจ๋‘ ์ฒ˜์Œ์ด๋ผ์„œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์˜€๋‹ค.

     

    ํ˜„์žฌ ์žฅ๊ณ ์™€์˜ ์ฒซ ๋งŒ๋‚จ์„ ๊ฐ€์ง€๊ณ  4์ผ์ฐจ!

    ์ด๋ฒˆ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ๋Š” ๊ณต๋ถ€ํ–ˆ๋˜ ์žฅ๊ณ ์˜ ๊ธฐ์ดˆ์™€ ์—ด์‹ฌํžˆ ๊นจ์ง€๊ณ  ๋ถ€์„œ์ง€๋ฉฐ ์–ป์€ ๊ฒƒ๋“ค์„ ์ ์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค!


    Django๋ž€ ๋ฌด์—‡์ธ๊ฐ€

    Django(์žฅ๊ณ )๋Š” ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

    ์ด์ „์— Flask๋ฅผ ํ•œ ๋ฒˆ ์ฐ๋จนํ•ด๋ณธ ์ ์ด ์žˆ๋Š”๋ฐ ๊ทธ๊ฒƒ๊ณผ ํ•จ๊ป˜ ์–‘๋Œ€์‚ฐ๋งฅ๊ณผ ๊ฐ™์€ ๋Š๋‚Œ์˜ ํฌ์ง€์…˜์ด๋‹ค.

     

    ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” Framework์ด๋ฏ€๋กœ

    ํด๋ผ์ด์–ธํŠธ์˜ request์— ๋Œ€ํ•œ ๋‹ต์žฅ๊ณผ ๊ทธ๊ฒƒ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

     

     

    Django์˜ MVTํŒจํ„ด (Model View Template)

    ์žฅ๊ณ ๋Š” 3๊ฐ€์ง€์˜ ์š”์†Œ๋กœ ๋™์ž‘ํ•œ๋‹ค.

     

    Model : DB์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ

    View : ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง์ด ๋™์ž‘ํ•˜์—ฌ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ…œํ”Œ๋ฆฟ์— ์ „๋‹ฌํ•˜๋Š” ์—ญํ• 

    Template : ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” UI

     

    ์žฅ๊ณ ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ„๋‹จํžˆ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    ๋”๋ณด๊ธฐ

    1. ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ์˜ request -> urlsolver(urlconf)๋ฅผ ์ด์šฉํ•˜์—ฌ URL์„ ๋ถ„์„

        - ํŒจํ„ด ๋ชฉ๋ก์—์„œ ์ผ์ผํžˆ ํ™•์ธํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ ํƒ์ƒ‰

    2. ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ๊ด€๋ จ๋œ view์— ์ „๋‹ฌ

    3. view์—์„œ ๋กœ์ง์„ ์‹คํ–‰ํ•œ๋‹ค. ๋งŒ์ผ DB ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๋ชจ๋ธ์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›๋Š”๋‹ค.

    4. ๋กœ์ง ์ฒ˜๋ฆฌ ํ›„ template์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ „์†กํ•  HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

    5. ๋งˆ์ง€๋ง‰์œผ๋กœ HTML ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ธ๋‹ค.

     


    Django ๋ผˆ๋Œ€ ๊ตฌ์ถ•ํ•˜๊ธฐ

    ํ”„๋กœ๊ทธ๋žจ์— ํ•„์š”ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์™€ app์„ ๋งŒ๋“ค์–ด๋ณด์ž

     

    1. ๊ฐ€์ƒํ™˜๊ฒฝ ๊ตฌ์ถ•

    ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ ์ฆ‰ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์žฅ๊ณ ๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค.

    ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜์—์„œ ์ฝ˜์†”์„ ํ†ตํ•ด ์„ค์น˜ํ•œ๋‹ค.

    python3 -m venv myvenv

    ๊ฐ€์ƒํ™˜๊ฒฝ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ํ›„, ์‹คํ–‰ํ•œ๋‹ค.

    source myvenv/bin/activate

    ์ดํ›„ pip๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„, ์žฅ๊ณ ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

    python -m pip install --upgrade pip
    pip install django

     

    ์„ค์น˜ ํ–ˆ๋‹ค๋ฉด ์žฅ๊ณ ์˜ ๋ผˆ๋Œ€๋ฅผ ๊ตฌ์ถ•ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ๋‹ค.

    django-admin startproject mysite(๋””๋ ‰ํ† ๋ฆฌ๋ช…) .

    ์  .์€ "ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์žฅ๊ณ  ์„ค์น˜"๋ฅผ ์Šคํฌ๋ฆฝํŠธ์— ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• (์ถ•์•ฝํ‘œํ˜„)

     

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ์ด ๋  ๊ฒƒ์ด๋‹ค!

    django (ํ”„๋กœ์ ํŠธ ์œ„์น˜)
    โ”œโ”€โ”€โ”€manage.py
    โ””โ”€โ”€โ”€mysite
            settings.py
            urls.py
            wsgi.py
            __init__.py

    manage.py : ์Šคํฌ๋ฆฝํŠธ, ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ ๋„์›€

    setting.py : ์›น์‚ฌ์ดํŠธ ์„ค์ •

    urls.py : urlsolver์˜ ํŒจํ„ด ๋ชจ์Œ

    wsgi.py : wsg ํ”„๋กœํ† ์ฝœ

     

    2. setting.py

    setting.py์—์„œ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์„ ๋ฐ”๊พธ์–ด ์ค€๋‹ค.

    1. ์‹œ๊ฐ„๋Œ€ ์„ค์ •

    TIME_ZONE = 'Asia/Seoul'

    2. ์ •์ ํŒŒ์ผ ๊ฒฝ๋กœ ์ถ”๊ฐ€

    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')

    3. ํ˜ธ์ŠคํŠธ ์„ค์ •

    ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]']

    ํ•ด๋‹น ํ˜ธ์ŠคํŠธ๋Š” ๋ฐฐํฌ ์‹œ์— ์ˆ˜์ •ํ•ด์ค€๋‹ค.

     

    3. DB์„ค์ •

    ์žฅ๊ณ ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ํˆด๋กœ sqlite3๋ฅผ ์ง€์›ํ•œ๋‹ค.

    ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค.

     

    python manage.py migrate

     

    ๋Œ“๊ธ€