본문 바로가기
Django(Python)

Django 프로젝트 구성

by 승환파크 2023. 5. 30.

장고 프로젝트 설치

장고 프로젝트를 설치하기 위해서는 터미널을 사용해야한다.

django-admin startporject 프로젝트명 .

마지막에 . 은 현재 폴더에 파일을 생성하겠다는 의미로 반드시 작성해야한다.

위의 명령어를 실행한 뒤 생성된 프로젝트 폴더를 보면 프로젝트 명으로 된 폴더가 하나 생성이 되어있는 것을 확인할 수 있다.

 

장고 프로젝트 기본설정하기

장고 프로젝트를 생성한 이후 기본적으로 설정을 해야하는 것들이 있다.

위의 명령어로 실행된 폴더 안을 보면 여러가지 파일들이 들어있다.

settings.py 파일 수정하기

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

DEBUG = True

# 접근 가능한 ip주소
ALLOWED_HOSTS = ["127.0.0.1",
                 "localhost",]

# 사용하는 앱들
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "todo",
]

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]

ROOT_URLCONF = "mytodo.urls"

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "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",
            ],
        },
    },
]

WSGI_APPLICATION = "mytodo.wsgi.application"

# 데이터베이스 설정
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}

AUTH_PASSWORD_VALIDATORS = [
    {
        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
    },
]

LANGUAGE_CODE = "en-us"

# 시간 설정하기 "Asin/Seoul"로 한국 시간대 설정
TIME_ZONE = "Asia/Seoul"

USE_I18N = True

USE_TZ = True

STATIC_URL = "static/"

DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"

맨 처음 작성되어 있는 것에서 본인이 수정하고 싶은 부분만 수정을 해주면 된다.

  • ALLOWD_HOSTS : 접근을 허용할 ip주소 및 도메인 주소를 작성하면 된다.
  • INSTALLED_APPS : 기본적으로 적힌 app들 및 사용자가 생성해서 사용할 app들을 적어주면 된다.
  • DATABASES : 본인이 사용하고싶은 데이터베이스를 적어주면 된다.
  • TIME_ZONE : 시간대를 설정할 수 있다. 보통 한국 시간대를 사용하기 위해서는 Asia/Seoul로 작성한다.

urls.py 파일 수정하기

urls.py 파일은 프로젝트에서 접근하기위한 주소들을 작성하는 곳이다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
]

위의 작성 방식처럼 path를 사용해서 적어주며 사용하는 앱들 별로 크게 나눠서 작성할 수 있다.

만약 app1 이라는 app이 있다면 path에 app1 urls에 접근하기 위해서 작성을 추가하면 된다.

urlpatterns = [
    path("admin/", admin.site.urls),
    #     입력주소           실제 url 들이 모여있는 urls.py 파일
    path("app1/", include("app1.urls")),
]

 

장고 app 설치하기

장고는 기능별로 앱을 따로 만드는데 앱들 별로 큰 기능들을 수행한다.

 

앱 생성하기

python manage.py startapp App이름

 

앱 설정하기

앱을 생성 했다면 많은 파일들이 생기게 된다.

1. models.py

각 모델들을 생성할 수 있는 파일로 모델들은 클래스로 정의해서 사용한다.

모델들을 클래스로 정의하기 위해서는 django 에서 지원하는 models.Model을 상속 받아야 한다.

from django.db import models

class 모델_명(models.Model):
	변수1 = models.필드 타입(필드 조건),
    변수2 = models.필드 타입,
    ...

 

2.views.py

모델들에 접근해서 데이터를 처리하고 템플릿에게 접근해서 화면을 보여주게 불러오는 파일이다.

이 기능들을 쓰기위해서는 각각의 함수를 만들어서 사용하면 된다.

from django.shortcuts import render, redirect
from .models import 모델_이름
from .forms import 폼_이름

def 함수_명(request):
	처리 코드
    return render(request, "html 파일 위치", {"객체_명" : html에서 사용할 객체})

모델과 폼에 접근할 수 있게 import를 작성한다.

def 로 함수를 정의하고 파라미터로 request 와 다른 정보들을 받아올 수 있다.

return 으로 렌더링을 하여 templates에 있는 html과 연동하여 화면을 사용자에게 보여주는 방식이다.

 

3. urls.py

메인 urls.py와는 다르게 app에서 사용할 url들을 지정하는 곳이다.

from django.urls import path
from . import views

urlpatterns = [
    path("", views.함수_명, name="url 이름"),
]

views 와 연동할 수 있도록 views 를 import 한다.

path를 적어줄 때에는 맨 앞에 url 주소를 작성하고 가운데는 views 에 생성한 함수 이름을 넣는다.

이후 마지막에는 url을 불러오기 위한 url 이름을 작성한다.

 

4. forms.py

html의 form태그에 사용하기 위해서 작성을한다.

작성된 form은 html에서 사용할 수 있고 submit으로 정보를 url에 전달할 수 있다.

from django import forms
from .models import 모델_이름

class 클래스_이름(forms.ModelForm):
    class Meta:
        model = 모델_이름
        fields = ("모델변수_이름", "모델변수2_이름", "모델변수3_이름", ...)

클래스를 작성하여서 사용하는 방식이며 fields 안에 form태그로 사용할 모델의 변수들을 적어준다.

 

5.admins.py

admin은 관리자로 관리자 페이지에서 접근할 수 있는 모델들을 작성하여 관리자 페이지에서 모델들에게 접근할 수 있게 해준다.

from django.contrib import admin
from .models import 모델_이름

admin.site.register(모델_이름)

 

6. templates 폴더

templates 폴더는 직접 생성해 줘야하며 그 안에 html 파일들을 넣고 views 에서 html 파일을 사용하기 위해서 미리 만들어 둬야한다.

templates 폴더는 사용자가 만든 app 폴더 안에 만들어야 하며 그 안에는 html 파일들이 존재한다.

'Django(Python)' 카테고리의 다른 글

Django  (1) 2023.05.26