[Django] 장고 기본 사용법

앱 생성

 

python manage.py startapp photo

 

settings.py의 INSTALLED_APPS에 photo 추가.

 

작성 순서는 본인이 편한대로 하면 된다.

필자는 다음과 같은 순서로 작성해보겠다.

1. model

2. views

3. template

4. urls

 

photo/models.py

from django.db import models


class Photo(models.Model):
    title = models.CharField(max_length=50)
    author = models.CharField(max_length=50)
    image = models.CharField(max_length=200)
    description = models.TextField()
    price = models.IntegerField()

CharField 는 max_length가 필수 매개변수이다.

 

모델을 작성하였으면 모델 파일을 생성하고 실제 DB table을 생성해야 한다.

아래 명령어를 실행하면 photo app 안에 마이그레이션 폴더안에 새 파일이 생성 됨을 확인할 수 있다.

python manage.py makemigrations

 

아래 명령어를 실행하면 위에 생성된 파일을 토대로 DB table이 생성된다.

python manage.py migrate

 

 

photo/views.py

from django.shortcuts import render
from rest_framework.generics import get_object_or_404

from photo.models import Photo


def photo_detail(request, pk):
    # Photo table에 pk에 해당하는 튜플이 존재하면 튜플 리턴, 존재하지 않으면 404 리턴
    photo = get_object_or_404(Photo, pk=pk)
    return render(request, 'photo/photo_detail.html', {'photo': photo})

장고 템플릿 폴더 생성은 다음 포스트 참조. https://hooeverything.tistory.com/10

 

 

photo/template/photo/photo_detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Photo app</title>
</head>
<body>
  <h1>{{ photo.title }}</h1>
  <section>
    <div>
      <img src="{{ photo.image }}" alt="{{ photo.title }}" width="300" />
      <p>{{ photo.description }}</p>
      <p>{{ photo.author }}, {{ photo.price }}원</p>
    </div>
  </section>
</body>
</html>

위의 views.py에서 리턴해주는 photo를 사용한 것이다.

 

프로젝트이름/urls.py

 

urlspatterns에 다음 추가

path('photo/', include('photo.urls'))

 

photo/urls.py

path('<int:pk>/', views.photo_detail)

 

이제 모두 작성이 완료 되었다.

모델에 데이터 등록을 편하게 하기 위해 admin 관리를 하자.

 

아래 명령어를 입력하여 수퍼유저 생성

python manage.py createsuperuser

 

photo/admin.py

from django.contrib import admin
from photo.models import Photo


admin.site.register(Photo)

어드민 관리 모델에 Photo 추가

 

장고 실행

python manage.py runserver

 

아래 접속후 로그인

localhost:8000/admin/

 

Photo에 데이터 추가.

 

 

 

localhost:8000/photo/1/

 

 

완성!

 


참고

백엔드를 위한 DJANGO REST FRAMEWORK with 파이썬 권태형 저