Django 포스팅
Doyeon0430 | 2023년 06월 29일
이번시간에는 django에 데이터베이스와 앱을 설치하고 templates을 적용시켜보는 과정까지 배워보겠습니다.
앱은 프로젝트 내에서 개별적으로 관리할 수 있는 하나의 폴더입니다.
여기서 templates를 추가하면 직접 화면에 배치할 수 있습니다.
공식문서 : Django 공식 문서
앱은 작업을 할 때 기본적으로 필요한 모듈입니다.
설치법은 아주 간단하며 다음과 같이 입력하시면됩니다.
CMD 입력창
$ python manage.py startapp works
저는 works라는 도메인 이름으로 설정하기위해 앱 이름도 똑같이 통일시켜줬습니다.
이처럼 페이지를 나눌 때 구분하기 쉽도록 앱 이름을 설정해주는 것이 좋습니다.
데이터베이스는 설치한 앱 내부에 있는 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에 다음과 같이 입력하셔야합니다.
마지막 단계로 템플릿을 추가하겠습니다.
장고의 기본 구조는 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)
간편 댓글 작성