Django Path - pai-plznw4me/django-initializer GitHub Wiki

์žฅ๊ณ  ๊ฒฝ๋กœ ์ฐพ๊ธฐ

์žฅ๊ณ ๋Š” templates ๊ณผ static ํŒŒ์ผ์„ ์ฐพ์„๋•Œ 2๊ฐ€์ง€ ๊ฒฝ๋กœ ๋ถ„๋ฅ˜๊ฐ€ ์žˆ๋‹ค.
ํ•˜๋‚˜๋Š” default ๊ฒฝ๋กœ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” app ๊ฒฝ๋กœ์ด๋‹ค.
๋ฐ˜๋“œ์‹œ ๊ฒฝ๋กœ ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. (static, templates ๊ฐ€ ๋™์ผํ•˜๋‹ค)

๊ฐ€๋ น test.html ํ…œํ”Œ๋ฆฟ์„ ์ฐพ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
์šฐ์„  ์žฅ๊ณ ๋Š” settings.py ์— ์ •์˜๋˜์–ด ์žˆ๋Š” ๊ธฐ๋ณธ ์œ„์น˜๋ฅผ ์ฐพ์•„ ๋“ค์–ด๊ฐ„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—†๋‹ค๋ฉด ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ app ํ•˜์œ„์— ์žˆ๋Š” templates ํด๋”๋ฅผ ์ฐพ์•„ ๋“ค์–ด๊ฐ„๋‹ค.

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์„œ app ์ด๋ฆ„ ์•„๋ž˜ templates - app ์ด๋ฆ„ ์ˆœ์œผ๋กœ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
์•ˆ๊ทธ๋Ÿฌ๋ฉด django ์—์„œ ์ •ํ•ด์ง„ ์ˆœ์„œ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค app ์— ์žˆ๋Š” test.html ์„ ๋ถˆ๋Ÿฌ์˜ฌ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

app1
 |-templates
    |-test.html
app2
 |-templates
    |-test.html

ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑํ•ด ๋†“์œผ๋ฉด templates ์„ ์ฐพ์„๋•Œ ์ •ํ™•ํ•˜๊ฒŒ ๋ช…์‹œํ•ด ๋†“์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค ๊ฐ€๋ น app1/test.html ๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ์ผ์ด ์—†๋‹ค.

app1
 |-templates
    |-app1
       |-test.html
app2
 |-templates
    |-app2
       |-test.html

์–ด๋–ค App ์—์„œ ์š”์ฒญ์„ ํ•˜๋˜ ์žฅ๊ณ ๋Š” templates, static ํŒŒ์ผ์— ๊ด€๋ จํ•ต์„œ๋Š” ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ templates ์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— app1 ์—์„œ app2 ์— ์žˆ๋Š” test.html ์„ ์‚ฌ์šฉํ• ๋•Œ๋„ app2/test.html ์ด๋ผ๊ณ  ์ ์–ด ์ฃผ๋ฉด ๋œ๋‹ค!

์žฅ๊ณ ์—์„œ ๊ฒฝ๋กœ ๋ฐ url ์œ„์น˜๋ฅผ ์ฃผ๋กœ ์ง€์ •ํ•œ๋‹ค. ๊ทผ๋ฐ ๊ทธ 2๊ฐ€์ง€๊ฐ€ ํ—ท๊ฐˆ๋ฆด์ˆ˜ ์žˆ๋‹ค.

๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜์ž๋ฉด ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ• ๋•Œ๋Š” ๊ฒฝ๋กœ ์ง€์ • view ๋ฅผ ํ†ตํ•œ url ์ ‘๊ทผ์€ url ์ง€์ •์œผ๋กœ ๋ถ„๋ฅ˜ํ•ด ๊ธฐ์–ตํ•˜๋ฉด ์ข‹๋‹ค.

1. url ์ง€์ •

<APP_NAME>:

<APP_NAME> ์ง€์ • ๊ฒฝ๋กœ

# urls.py

app_name = 'school_management_app'  # <<<< APP_NAME ์ง€์ •๊ฒฝ๋กœ
urlpatterns = [
    path('student_signup', student_signup, name='student_signup'), # <<<< VIEW_NAME ์ง€์ •๊ฒฝ๋กœ

2. ๊ฒฝ๋กœ ์ง€์ •

static ํŒŒ์ผ ๋˜๋Š” render ์‹œ ์–ด๋–ค templates file ์„ ๋ถˆ๋Ÿฌ์˜ฌ์ง€ ๊ฒฐ์ • ํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ django ์—์„œ ๊ธฐ์ค€ ๊ฒฝ๋กœ๊ฐ€ ์–ด๋””์ธ์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค.

|-project
|-app
   |- templates <-- templates ํŒŒ์ผ ๊ธฐ์ค€ ๊ฒฝ๋กœ
        |-app
            |-index.html
   |- static # <-- static file ๊ธฐ์ค€ ๊ฒฝ๋กœ
        |-js
           |- scrollUp.js

2.1 templates file ๊ธฐ์ค€ ๊ฒฝ๋กœ

๊ธฐ์ค€ ๊ฒฝ๋กœ๋Š” /templates ํด๋”๊ฐ€ ๊ธฐ์ค€ ๊ฒฝ๋กœ์ด๋‹ค.
๊ฐ€๋ น render function ์œผ๋กœ index.html ์„ ์ฐธ์กฐํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.
๊ทธ๋Ÿผ ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.

render(request, template_name='app/index.html')

2.2 static file ๊ธฐ์ค€ ๊ฒฝ๋กœ

์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„๋ฅผ manage.py ๊ฒฝ๋กœ์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— python ์—์„œ static file ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”๊ฑด ์–ด๋ ต์ง€ ์•Š๋‹ค. ํ•˜์ง€๋งŒ html ์—์„œ static ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ๊ฐ€ ๋ฌธ์ œ์ธ๋ฐ html ์—์„œ static file ์„ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ์˜ ๊ฒฝ๋กœ๋„ templates ๊ฒฝ๋กœ์™€ ์œ ์‚ฌํ•˜๋‹ค. ๊ธฐ์ค€ ๊ฒฝ๋กœ๋Š” <APP>/static ํด๋”๊ฐ€ ๊ธฐ์ค€ ๊ฒฝ๋กœ์ด๋‹ค.

์œ„ ์˜ˆ์‹œ์—์„œ scrollUp.js ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค๊ณ  ํ–ˆ์„๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถˆ๋Ÿฌ์˜ฌ์ˆ˜ ์žˆ๋‹ค.

{% load static %}
<script src="{% static 'app/js/scrollUp.js' %}"></script>    
โš ๏ธ **GitHub.com Fallback** โš ๏ธ