본문 바로가기

Web Development

[Django] Django 튜토리얼 (새 프로젝트 시작하기)

728x90

Django의 프로세스 (참고: https://guiyum.tistory.com/82)

  1. urls.py 파일 내 사용자의 요청(request)에 맞는 url을 찾음
  2. 해당 url에 연결된 views.py 파일 내 함수를 찾아 기능을 수행
  3. 만약 함수 로직 내 데이터베이스 관련 처리가 필요하면 model을 통해 처리하고 그 결과를 반환
  4. 마지막으로 view는 최종 결과로 templates(HTML 파일)을 클라이언트에 띄워줌

HTTP 요청방식

  • HTTP 요청 방식에는 GET / POST / PUT / DELETE 가 있으며, 보통은 GET / POST를 사용

GET

주소가 노출되어도 괜찮고, 다른 사용자에게 공유가 가능한 정보를 처리할 때 사용

POST

회원가입이나 결제와 같은 다른 사용자와 결제해서는 안되는 정보를 처리할 때 사용

 

 

Django 프로젝트 생성

django-admin startproject 프로젝트이름 .
  • urls.py : 사용자가 어떤 URL 형식으로 접근했을 때 어떻게 웹사이트를 작동시킬지를 정리해놓은 파일
  • settings.py: 프로젝트의 설정을 담고 있는 파일
  • migration: 데이터베이스에 적용시켜야 하는 변화에 대한 기록 (예를 들어, 댓글 작성 기능을 추가했을 때, DB에 댓글을 저장하기 위한 테이블을 추가해주어야 하는 등)

 

서버 실행

python manage.py runserver

 

데이터베이스 생성하기

python manage.py migrate

 

관리자 계정(super user) 생성하기

python manage.py createsuperuser
  • 127.0.0.1:8000/admin으로 접속해 관리자 계정의 사용자명과 비밀번호를 입력하면 관리자 페이지에 접속 가능
  • .gitignore 파일을 열어 db.sqlite3가 포함되어 있는지 확인(데이터베이스에 대한 버전 관리를 하지 않도록)

앱 만들기

  • 모든 django 프로젝트는 1개 이상의 앱으로 구성되며, 앱이란 특정한 기능을 수행하는 단위 모듈로서 블로그/갤러리/방명록과 같이 3가지 기능을 갖는 웹사이트를 만들 때 일반적으로 3개의 앱을 만들어 개발하고 관리한다
python manage.py startapp 앱이름

settings.py 파일 INSTALLED_APPS 부분에 앱 추가

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '앱이름',
]

(한국 시간 기준으로 수정할 경우) settings.py 파일 TIME_ZONE 수정

TIME_ZONE = 'Asia/Seoul'

 

 

urls.py에 다음과 같이 URL을 추가

urlpatterns = [
    path(앱이름, include('앱이름.urls')),
    path('admin/', admin.site.urls),
]

새로 만든 앱 폴더에 urls.py를 생성한 뒤, 다음처럼 작성

from django.urls import path
from . import views # 현재 폴더에 있는 view.py를 가져온다

urlpatterns = [
    path('', views.index), # 입력된 url이 현재 앱 이름과 같을 때, views.py 내 index 함수를 실행한다
]

views.py 파일에 index 함수를 다음과 같이 정의

from django.shortcuts import render

def index(request):
    return render( # render함수를 사용해 템플릿 폴더에서 현재 앱 폴더의 index.html 파일을 찾아 이용자에게 보내준다
        request,
        '앱이름/index.html',
    )

 

html 파일 정리

  1. django project 에다가 templates 폴더 생성
  2. django project settings.py에 다음과 같이 os module 을 import 하여 BASE_DIR 에 templates 폴더를 경로로 지정
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 

이후론 templates 폴더에 html 파일을 정리할 수 있다. (views.py 경로 설정 주의)

 

static 파일

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/

STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
반응형