728x90
반응형
앱 만들기
articles 앱 생성
## console
python manage.py startapp articles
장고에 등록
## drf_project/settings.py
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
'rest_framework',
'articles',
]
모델 생성
## articles/models.py
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
생성한 모델을 DB에 등록
## console
python manage.py makemigrations
python manage.py migrate
관리 페이지에 Article모델을 추가
## articles/admin.py
from django.contrib import admin
from articles.models import Article
admin.site.register(Article)
관리 페이지
관리자 생성
## console
python manage.py createsuperuser
python manage.py runserver
관리자 페이지 접속
게시글 작성
- article object 대신 글 제목이 보이게 하기
## articles/models.py
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return str(self.title)
views.py에 연결
## articles/views.py
from rest_framework.response import Response
def index(request):
return Response("연결되었습니다.")
urls.py 연결
## drf_project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path("articles/", include("articles.urls"))
]
## articles/urls.py
from django.urls import path
from articles import views
urlpatterns = [
path('index/', views.index, name='index'),
]
메소드 등록
http://127.0.0.1/index/ 에 들어가보면
이런 에러가 뜬다. 어떤 메소드로 요청을 받을건지 안 정해서 생기는 오류
## articles/views.py
from rest_framework.response import Response
from rest_framework.decorators import api_view
@api_view(["GET","POST"])
def index(request):
return Response("연결되었습니다.")
이렇게 GET과 POST를 지정해주면
Django REST framework에서 지원하는 페이지가 보인다
article 불러오기
## articles/views.py
from rest_framework.response import Response
from rest_framework.decorators import api_view
from articles.models import Article
@api_view(["GET", "POST"])
def index(request):
articles = Article.objects.all()
return Response(articles)
articles를 지정하고 Response에 넣어보면
이런 에러 페이지가 뜬다. 읽어보니 object type을 JSON으로 해달라는 것 같다
## articles/views.py
from rest_framework.response import Response
from rest_framework.decorators import api_view
from articles.models import Article
@api_view(["GET", "POST"])
def index(request):
articles = Article.objects.all()
article = articles[0]
article_data = {
"title": article.title,
"content": article.content,
"created_at": article.created_at,
"updated_at": article.updated_at,
}
return Response(article_data)
이렇게 json형태로 보내주면 정상 작동함을 알 수 있다.
근데 지금은 article이 하나라서 상관없지만
계속 이런 노가다를 거쳐서 할 수는 없다
drf에서는 이런 불편점을 serializer를 통해 간단하게 할 수 있다
다음 포스팅에서는 serializer에 대해 다뤄볼 예정이다
Uploaded by N2T
728x90
반응형