장고, 퀴즈 앱 REST API 서버 만들기 (2)
정리. 수알치 오상문
[참고 동영상] https://youtu.be/ywJWbAF6txQ
이제 퀴즈 모델, 뷰 등을 만들겠습니다. 기존에 존재하는 파일이면 그 파일을 수정하고, 없는 파일은 새로 만들어서 저장하면 됩니다.
1) models.py 작성
[quiz/models.py]
from django.db import models
# Create your models here.
class Quiz(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
answer = models.IntegerField()
2) views.py 작성
퀴즈 뷰에서는 전달된 id 개수만큼 랜덤한 퀴즈 데이터를 보내줍니다. 나중에 나오는 urls.py를 보면 알겠지만, 127.0.0.1/quiz/3 처럼 접속하면 3은 id에 전달되어 퀴즈 3개를 랜덤하게 골라서 보내줍니다.
[quiz/views.py]
from rest_framework.decorators import api_view
from .models import Quiz
from .serialrizers import QuizSerializer
import random
# 테스트용 헬로우월드 뷰
@api_view(['GET'])
def helloAPI(request):
return Response("Hello, world!")
# 퀴즈를 다루는 뷰
@api_view(['GET'])
def randomQuiz(request, id):
totalQuizs = Quiz.objects.all()
randomQuizs = random.sample(list(totalQuizs), id)
serializer = QuizSerializer(randomQuizs, many=Quiz) # many: 다량 데이터도 시리얼라이즈
return Response(serializer.data)
3) serializers.py 파일 작성
시리얼라이즈는 restapi를 요청하는 클라이언트에 json 형태의 자료를 전달할 수 있도록 지원합니다.
[quiz/serializers.py]
from rest_framework import serializers
from .models import Quiz
class QuizSerializer(serializers.ModelSerializer):
class Meta:
model = Quiz
fields = ('title', 'body', 'answer')
4) Rest API 접속 경로를 위한 quiz/urls.py 파일 작성
path에 지정된 '<int:id>/'는 127.0.0.1/quiz/숫자 형태로 접속할 때 그 숫자를 id라는 이름으로 다룰 수 있게 합니다.
[quiz/urls.py]
from django.urls import path, include
from .views import helloAPI, randomQuiz
urlpatterns = [
path('hello/', helloAPI),
path('<int:id>/', randomQuiz),
]
5) admin.py 작성
quiz 앱을 관리자 페이지에서도 다룰 수 있도록 앱 정보를 설정합니다.
from django.contrib import admin
from .models import Quiz
# Register your models here.
admin.site.register(Quiz)
6) config(프로젝트 앱)에 있는 urls.py 작성
클라이언트가 접속하면 가장 먼저 프로젝트 앱 config/urls.py를 참고합니다. 만약 quiz가 붙은 주소이면 quiz/urls.py를 참고하도록 설정합니다.
from django.urls import path, include
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('quiz/', include('quiz.urls')),
]
7) 데이터베이스 정보수집/생성 및 관리자 계정 만들기
다음 명령을 이용하여 앱 데이터베이스 정보를 수집하고 생성합니다.
(1) 데이터베이스 모델 변경사항 수집
py manage.py makemigrations <-- 전체 앱에서 확인
또는
py manage.py makemigrations quiz <--- 퀴즈 앱 부분만 확인
(2) 데이터베이스 모델 변경사항 등록
py manage.py migrate <-- 전체 앱 변경사항을 데이터베이스에 반영
또는
py manage.py migrate quiz <--- 퀴즈 앱 부분 데이터베이스에 반영
(3) 관리자 계정 만들기
py manage.py createsuperuser
Username : 아이디 입력 (예; admin)
Email address : 관리자 이메일
Password : 비밀번호
Password(again) : 비밀번호 다시 입력
8) 서버 실행
80번 포트를 사용하도록 실행합니다.
py manage.py runserver 80
9) hello, world 테스트
웹브라우저에서 아래 주소로 접속합니다.
127.0.0.1/quiz/hello
10) 관리자 페이지에서 퀴즈 작성
admin 페이지에 접속하여 퀴즈를 5개 이상 작성합니다.
Titel에 퀴즈 제목, Body에 제시 답안(슬래시로 답안 구분), Answer에 정답 번호를 작성하고 Save를 누릅니다.
같은 방식으로 문제를 5개 이상 만들어 저장하세요.
11) Rest api 주소에서 퀴즈 받아오기
127.0.0.1/quiz/3 으로 접속하면 랜덤 퀴즈 3개 정보가 json 형식으로 돌아오는 것을 볼 수 있습니다.
<이상>
'Django' 카테고리의 다른 글
장고 REST framework 기본 패키지 설치 (0) | 2021.11.23 |
---|---|
장고, 'staticfiles' is not a registered tag library 오류 해결 (0) | 2021.11.22 |
장고, 퀴즈 앱 REST API 서버 만들기 (1) (0) | 2021.11.21 |
장고, 가상 환경 만들고 활성화/비활성화 하기 (0) | 2021.11.21 |
ERR unknown command 'BZPOPMIN' 에러 처리 (0) | 2021.11.13 |