My Image

Django 포스팅

[장고 튜토리얼 2번] 모델 적용하고 media 이미지파일 경로 설정

Doyeon0430 | 2023년 06월 29일

Django 이미지

이번시간에는 django에 데이터베이스와 앱을 설치하고 templates을 적용시켜보는 과정까지 배워보겠습니다.

앱은 프로젝트 내에서 개별적으로 관리할 수 있는 하나의 폴더입니다.

여기서 templates를 추가하면 직접 화면에 배치할 수 있습니다.

공식문서 : Django 공식 문서

 

  1. Django 가이드 - 앱 설치

  2. Django 가이드 - 데이터베이스 설치

  3. Django 가이드 - 템플릿 추가

 

 

1. Django 가이드 - 앱 설치

앱은 작업을 할 때 기본적으로 필요한 모듈입니다.

설치법은 아주 간단하며 다음과 같이 입력하시면됩니다.

 

CMD 입력창

$ python manage.py startapp works

저는 works라는 도메인 이름으로 설정하기위해 앱 이름도 똑같이 통일시켜줬습니다.

이처럼 페이지를 나눌 때 구분하기 쉽도록 앱 이름을 설정해주는 것이 좋습니다.

 

 

2. Django 가이드 - 데이터베이스 설치

데이터베이스는 설치한 앱 내부에 있는 models.py 필드값을 설정하면 등록시킬 수 있습니다.

장고는 데이터들을 Model에서 View로 전달하고 Template에 값이 입력되는 MVT방식에 데이터베이스를 지원합니다.

 

models.py

from django.db import models

class Works(models.Model):
    subject = models.CharField(max_length=100)
    director = models.CharField(max_length=100)
    produce = models.CharField(max_length=100)
    actor = models.CharField(max_length=100)
    create_date = models.DateTimeField()
    content = models.CharField(max_length=130)
    photo = models.ImageField(upload_to='works/')

    def __str__(self):
        return self.subject

저는 CharField와 DateTimeField등 기본적인 문법을 사용하여 필드를 설정하였습니다.

여기서 ImageFIeld를 설명하자면 이미지를 가져오는 필드로 이미지를 저장하기 위해 경로를 설정해줘야합니다.

 

(번외) media 설치 - settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

루트 프로젝트의 settings.py로 갑니다.

그리고 위와 같은 코드를 추가해주세요.

사진이 저장될 경로를 설정하는겁니다.

 

(번외) media 설치 - urls.py

from django.conf import settings
from django.conf.urls.static import static
from django.urls import re_path as url
from django.views.static import serve

urlpatterns = [
    url(r'^media/(?P<path>.*)$', serve, {'document_root':settings.MEDIA_ROOT}),
    url(r'^static/(?P<path>.*)$', serve, {'document_root':settings.STATIC_ROOT}),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

그리고 urls.py로 이동하고 폴더 위치를 지정해줘야합니다.

upload_to에 설정한 경로로 media가 생성되고 이미지가 저장 될 겁니다.

 

settings.py

INSTALLED_APPS = [
    "works.apps.WorksConfig",
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

그렇게 데이터베이스 모델을 settings.py에 추가해주면 모든 세팅이 끝납니다.

 

CMD 입력창

$ python manage.py makemigrations
$ python manage.py migrate

마지막으로 필드를 데이터베이스에 적용하기 위해 cmd에 다음과 같이 입력하셔야합니다.

 

 

3. Django 가이드 - 템플릿 추가

마지막 단계로 템플릿을 추가하겠습니다.

장고의 기본 구조는 MVT 패턴으로 [Model ↔ View ↔ Template]입니다. 

경로는 Models.py에서 Views.py로 이동하면서 Templates으로 전달됩니다.

지금까지 Models.py을 설정했으며 views.py와 Templates을 만들어보겠습니다.

 

1. urls.py - 프로젝트 내부

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

디렉토리에 접근할 수 있도록 코드를 추가해주세요.

 

2. urls.py - 앱 내부 (파일 추가)

from django.urls import path

from . import views

app_name = 'works'

urlpatterns = [
    path("", views.works, name="works"),
]

지금 urls.py는 앱 내부에 새로운 파일을 추가해야합니다.

여기서는 127.0.0.1/works에 도메인 주소로 시작합니다.

만약 works로 접속하고 싶으면 다음과 같이 입력하시면 됩니다. 

 

3. views.py

from django.shortcuts import render, get_object_or_404
from works.models import Works

def works(request):
    index = Works.objects.all().order_by('-create_date')
    context = {'index': index}
    return render(request,'works/works.html', context)

그리고 아까 입력한 모델을 가져오기 위해 작업하는 공간입니다.

데이터들을 날짜 역순으로 가져오는 코드이며 works.html로 보내줄 겁니다.

'works/works.html'이 works라는 폴더 내부에 works.html로 접속하라는 의미입니다.

 

[경로 위치]

myproject/
    manage.py
    myproject/
        settings.py
        urls.py
        ...
    myapp/
        models.py
        views.py
        urls.py
    templates
        works
            works.html
    ...

다음과 같이 템플릿 경로를 만들면 됩니다.

그러면 정상적으로 홈페이지가 접속되는 걸 보실 수 있습니다.

 

글을 마치며 앱을 설치하고 데이터베이스를 연결해서 템플릿까지 적용시켜봤습니다.

댓글 (0)

    댓글이 없습니다.

간편 댓글 작성

My Image My Image My Image My Image