Django(장고) 프로젝트 구조 살펴보기

장현웅·2023년 8월 31일
0

목차

  1. 장고 프로젝트 세팅
  2. 프로젝트 첫 세팅 후 장고 실행
  3. 테스트 페이지에 글자 띄우기
  4. 내가 만든 html 띄우기

1. 장고 프로젝트 세팅


- 장고 프로젝트 구조

- 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),
]

2. 프로젝트 첫 세팅 후 장고 실행


아무것도 작성하지 않은 첫 실행 때 나오는 페이지

3. 테스트 페이지에 글자 띄우기


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 클래스를 포함한다.

- 작동 순서

  1. 특정 페이지가 Request 되면, 장고가 HttpRequest 객체를 생성
    (request)
  2. 장고는 urls.py에서 정의된 특정 View 함수(views.base_response)에 첫 번째 인자로 해당 HttpRequest 객체를 전달
    (base_response(request))
  3. 해당 View는 함수의 결과값을 HttpResponse 클래스의 인스턴스 객체에 담아서 클라이언트에게 전송
    (return HttpResponse("안녕하세요! 장고의 시작입니다!"))

>>> 'views.py'가 django.http 모듈에서 HttpResponse 클래스를 임포트해오는데 'urls.py'는 HttpRequest 클래스를 임포트해오지 않는 이유

  1. 'urls.py'에서 View 함수를 호출할 때(클라이언트 요청), 이미 장고의 프레임워크 내부에서 'HttpRequest' 객체가 생성되어 넘겨주기 때문에 'views.py'의 'base_response(request)' 함수가 받은 매개변수 'request'객체는 이미 생성된 'HttpRequest'의 객체인 것이다.
  2. 'HttpResponse'클래스는 개발자가 직접 응답을 생성하여 반환할 때 사용하는 클래스로 개발자가 응답의 내용과 형식을 지정하려면 'HttpResponse' 클래스를 import하고 사용해야한다. 즉, 프레임워크 외부에서 직접 조작하는 것이기 때문에 import해줘야한다.
  3. 'HttpResponse'클래스와 'HttpRequest'객체는 서로 다른 역할을 한다.
  • 'HttpResponse'클래스는 응답을 생성할 때 import가 필요한 경우
  • 'HttpRequest'객체는 프레임워크가 자동으로 생성하여 View 함수에 제공하는 경우

3) 로컬호스트 주소

http://127.0.0.1:8000/test/

4. 내가 만든 html 띄우기


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

간단하게 장고 프로젝트 틀과 구동을 살펴봤는데 구동 원리 순서를 잘 기억해야할 것 같다.

0개의 댓글