📗 Django
요청과 응답
💡 Django가 요청을 받고 응답을 하는 순서 이해하기
- 요청(Request)이 들어옴
- URL(urls.py) 처리
- View(views.py) 처리
- Template(html) 처리
- 응답(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
2️⃣ 새로 만든 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에서 함수 정의 내리기
🤔 추가한 코드
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/
설정해 두었던 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 절대 오타내면 안 된다.
- 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!"를 보이게 한 것이다.
'공부 > Django 공부' 카테고리의 다른 글
[Django] MTV Pattern (0) | 2025.01.11 |
---|---|
[Django] 클라이언트 - 서버 구조 이해하기 (0) | 2025.01.10 |
[Django] Django 앱(App) 생성 및 등록하기 (0) | 2025.01.10 |
[Django] ⭐️Django 프로젝트(Project) 시작⭐️ (0) | 2025.01.04 |
[Django] ⭐️개발 환경 구성하기⭐️ (0) | 2025.01.04 |