앱 생성
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 파이썬 권태형 저
'장고(DJango)' 카테고리의 다른 글
(작성중) 장고 배포 하기 (gunicorn, Nginx) (0) | 2022.07.31 |
---|---|
(작성중) 장고 mysql (0) | 2022.07.31 |
[Django] 장고 HTML URL 경로 설정하는 방법 (0) | 2022.07.24 |
(작성중) 장고 JWT 이용하여 회원가입, 로그인 기능 구현 (Django JWT Token) (0) | 2022.07.24 |
[Django] 장고 templates, static 폴더 관리 (html, css, javascript) (0) | 2022.07.17 |