📗 Django 


요청과 응답

💡 Django가 요청을 받고 응답을 하는 순서 이해하기
  1. 요청(Request)이 들어옴
  2. URL(urls.py) 처리
  3. View(views.py) 처리
  4. Template(html) 처리
  5. 응답(Response) 전달

URL

urls.py

어떠한 url패턴으로 들어오면 어디의 View로 보낼까? 를 설정해 주는 py

urlpatterns 내부에 정의해 주면 된다.

# my_first_pjt/my_first_pjt/urls.py

from django.contrib import admin
from django.urls import path
from articles import views

urlpatterns = [
    path("admin/", admin.site.urls),		# "admin/" ➡️ Trailing Slash
    path("index/", views.index),		# "index/" ➡️ Trailing Slash
]

 

↓ urls.py에 추가하는 과정

더보기

1️⃣ my_first-pjt 속에 있는 urls.py

urls.py의 기본 구성

2️⃣ 새로 만든 App에 있는 views.py

미리 만들어두었던 App 속에 있는 views.py

3️⃣ views.py에 처음 쓸 땐 함수형으로 하는 게 좋음

→ 함수의 흐름이 다 보이기 때문

def index(request):
    pass
  • index를 입력받으면 무엇을 보여줄지 정의 내리는 코드
  • 지금은 "pass"라고 적어두었지만, 나중에 무엇을 할지 정의내려주면 됨

4️⃣ articles라는 App에 있는 views 파일을 my_first_pjt의 urls.py에 불러오기

 

🤔 추가된 코드

from articles import views	# articles에 있는 views 불러오기

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),	# ⬅️ 새롭게 추가
]

 

여기까지 urls.py 설정하는 과정임.


View

Views.py

  • URL에서 보내진 요청을 처리하는 index view 함수를 작성해 준다.
  • HTTP 요청을 받고, HTTP 응답을 반환
from django.http import HttpResponse

def index(request):
	response = HttpResponse("<h1>Hello, Django!</h1>") 
	return response

 

↓ views.py에 함수 작성하는 과정

더보기

1️⃣ views.py에서 함수 정의 내리기

<- urls.py / views.py->

 

🤔 추가한 코드 

from django.http import HttpResponse

def index(request):
    response = HttpResponse("<h1>Hello, Django!</h1>")
    return response

2️⃣ 실행하기

$ python manage.py runserver	# 서버 실행하기
January 11, 2025 - 07:04:37
Django version 4.2, using settings 'my_first_pjt.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

→ 컨트롤 c를 누른 상태로 http://127.0.0.1:8000/ 클릭하기

 

  • Welcome Page가 아닌 실제로 내가 코딩하는대로 동작하는 것이다.
    • 내가 입력한 코드가 반영되었다는 의미
Page not found
  • 해당 경로를 찾을 수 없다는 의미
  • url이 어떻게 정의되었는지 확인해보면 된다.
    • 우리는 index/ 로 정의내렸음

3️⃣ 정의한 url 경로로 실행하기

http://127.0.0.1:8000/index/
Django server
views.py 함수 정의

설정해 두었던 views.py와 똑같은 문자열이 출력된 걸 볼 수 있다.

 

얏호!

Chrome → HttpRequest → urls.py → views.py → HttpResponse → Chrome

 

이 순서를 거쳐서 우리에게 "Hello, Django!"를 보이게 한 것이다.


Django Template

이제는 HTML 파일을 작성하고 view로 사용해 보자

render(request, template_name, context)

 

↓ HTML 파일을 view를 통해서 보여주는 과정

더보기

1️⃣ urls.py 파일은 그대로 두고, views의 함수만 수정

변경 전

⬇️

변경 후
# "index.html"이라는 template를 기입
def index(request):
    return render(request, "index.html")
  • 우선 views.py에서 함수 정의를 새롭게 내린다.

2️⃣ App 폴더에 "templates"의 폴더 생성하기

🚨 templates 절대 오타내면 안 된다. 

articles의 app에 templates의 폴더가 새로 생성되었다.
  • templates의 폴더를 생성하였다.

 

 templates를 오타내면 안 되는 이유
  • Django에 있는 settings.py에 들어가면 TEMPLATES라는 게 있다. 
  • TEMPLATES에 'APP_DIRS' : True 로 돼 있는 걸 확인할 수 있다.
    • 이 코드가 의미하는 것은, 앞으로 App을 새로 만들더라도 그 속에 templates가 있는지 하나하나 확인하라는 의미다.

🚨 이런 기능이 있기 때문에 오타내면 templates를 사용할 수 없다.


3️⃣ index.html 파일 만들어주기

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>My First Django PJT</title>
  </head>
  <body>
    <h1>You done! You made this!</h1>
  </body>
</html>

 

이렇게 완수하고 서버를 다시 실행해주면

$ python manage.py runserver

 

index.html 속 문장이 서버에 표시된다.

 

HttpRequest →  URLs →  View →  Template → View →  HttpResponse

 

이 순서를 거쳐서 우리에게 "You done! You made this!"를 보이게 한 것이다.

 

 

+ Recent posts