- 장고 프로젝트 세팅
- 프로젝트 첫 세팅 후 장고 실행
- 테스트 페이지에 글자 띄우기
- 내가 만든 html 띄우기
- 장고 프로젝트 구조
- settings.py (프로젝트 환경 설정 파일)
INSTALLED_APPS - 장고에 설치 된 앱들 MIDDLEWARE - 사용자 요청/응답 사이에서 작동하는 시스템들 TEMPLATES - 나의 html파일을 자동으로 인식 DATABASES - 내가 사용할 데이터베이스 연동 설정 AUTH_PASSWORD_VALIDATORS - 패스워드 보안 수준 검증 LANGUAGE_CODE - 화면에 어떤 언어를 보여줄것인지 TIME_ZONE - 우리가 어떤 시간에 있는지 DEBUG - 개발 단계에서는 True, 배포할 때는 False (보안상)
- urls.py (View 메소드를 연결하고 요청 URL을 정의하는 파일)
장고 프로젝트의 전체의 API : 접속할 수 있는 URL의 주소를 만들어주고 관리
from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]
아무것도 작성하지 않은 첫 실행 때 나오는 페이지
1) urls.py 파일에 연결해줄 url 추가하기
from django.contrib import admin from django.urls import path from . import views urlpatterns = [ path('admin/', admin.site.urls), path('test/', views.base_response,name='first_test'), # test/라는 url과 views.py의 base_response함수를 연결 ] # Django의 URL 매칭 시스템은 'urlpatterns' 리스트에서 정의된 URL 패턴에 따라 클라이언트의 요청이 들어올 때 views.base_response 함수가 호출되며, 이 함수는 Httprequest 객체를 매개변수로 받는다.
2) views.py 파일 생성해서 base_response()함수 정의
from django.http import HttpResponse def base_response(request): return HttpResponse("안녕하세요! 장고의 시작입니다!")
# View 함수는 'HttpRequest' 객체를 통해 클라이언트 요청 정보를 확인하고, 필요한 처리를 수행하고 결과값을 생성하여 HttpResponse 객체나 JsonResponse 객체에 담아 반환
- views.py (웹 애플리케이션의 실제 동작을 정의하는 파일)
클라이언트 요청에 따라 어떤 데이터를 보여주거나 어떤 작업을 수행할지를 결정하는 View 함수 또는 View 클래스를 포함한다.
- 작동 순서
- 특정 페이지가 Request 되면, 장고가 HttpRequest 객체를 생성
(request)
ㅤ- 장고는 urls.py에서 정의된 특정 View 함수(views.base_response)에 첫 번째 인자로 해당 HttpRequest 객체를 전달
(base_response(request))
ㅤ- 해당 View는 함수의 결과값을 HttpResponse 클래스의 인스턴스 객체에 담아서 클라이언트에게 전송
(return HttpResponse("안녕하세요! 장고의 시작입니다!"))
>>> 'views.py'가 django.http 모듈에서 HttpResponse 클래스를 임포트해오는데 'urls.py'는 HttpRequest 클래스를 임포트해오지 않는 이유
- 'urls.py'에서 View 함수를 호출할 때(클라이언트 요청), 이미 장고의 프레임워크 내부에서 'HttpRequest' 객체가 생성되어 넘겨주기 때문에 'views.py'의 'base_response(request)' 함수가 받은 매개변수 'request'객체는 이미 생성된 'HttpRequest'의 객체인 것이다.
ㅤ- 'HttpResponse'클래스는 개발자가 직접 응답을 생성하여 반환할 때 사용하는 클래스로 개발자가 응답의 내용과 형식을 지정하려면 'HttpResponse' 클래스를 import하고 사용해야한다. 즉, 프레임워크 외부에서 직접 조작하는 것이기 때문에 import해줘야한다.
ㅤ- 'HttpResponse'클래스와 'HttpRequest'객체는 서로 다른 역할을 한다.
- 'HttpResponse'클래스는 응답을 생성할 때 import가 필요한 경우
- 'HttpRequest'객체는 프레임워크가 자동으로 생성하여 View 함수에 제공하는 경우
3) 로컬호스트 주소
http://127.0.0.1:8000/test/
1) 프로젝트 폴더에 templates 폴더 만들고 'my_test.html' 생성
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>테스트 페이지</title> </head> <body> <h3>테스트 페이지 입니다! 장고를 사용했어요!</h3> </body> </html>
2) 웹 페이지에 html을 띄우기 위해 urls.py에 연결해줄 url 추가
from django.contrib import admin from django.urls import path from . import views # 현재 위치 폴더에서 views 파이썬 파일 가져옴 urlpatterns = [ path('admin/', admin.site.urls), path('test/', views.base_response,name='first_test'), path('first/', views.first_view,name='first_view'), # first/라는 url과 View의 first_view함수를 연결 ]
3) views.py에 first_view함수를 정의 : url 요청을 하면 urls.py에서 연결한 함수가 views.py에서 실행. html파일을 불러와서 띄워주면 된다.
from django.shortcuts import render def first_view(request): return render(request, 'my_test.html')
render : 특정 html 파일을 불러와서 페이지를 새로고침해주는 기능
파라미터에 데이터를 담아서 보낼 수 있음 render(request, 'html 파일명')
4) first/ 주소로 접속
http://127.0.0.1:8000/first
간단하게 장고 프로젝트 틀과 구동을 살펴봤는데 구동 원리 순서를 잘 기억해야할 것 같다.